CSVインポート時の不具合を解消したいです。
現状ではAWSに配置したアプリケーションにアクセスし、CSVインポート機能を利用しようとしていますが、大きなサイズのCSVファイルをインポートするのに、
「413 Request Entity Too Large」
がスローされました。そこで、nginx.configに
「client_max_body_size」の値を設定しました。
あと一点、settings.pyに「FILE_UPLOAD_PERMISSIONS = 0o644」も追記しました。
ところが、それでもエラーになり、今度は「nginx error!」がスローされnginxのロゴ画面が表示さるようになってしまいました。
動作をいくつか確認していると、ある一定の時間(30秒くらい)でこの「nginx error!」が出力されるのがわかりました。
そこで、タイムアウトに関する設定をnginx.configに行いましたが変化ありません。
環境
インスタンスタイプ:t2.micro
ap:django
web:nginx(gunicorn)
db:PostgreSQL
nginx.conf(ファイルサイズとして3Mバイト、タイムアウトとして9999秒を設定しています※コメントに40Mとかありますが、無視してください)
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; # keepalive_timeout 65; keepalive_timeout 9999; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # 約40Mバイトのファイルをインポートするとエラー(413 Request Entity Too Large)になったため(下記併せ3箇所) client_max_body_size 3M; # タイムアウトに関する設定 proxy_connect_timeout 9999; proxy_send_timeout 9999; proxy_read_timeout 9999; send_timeout 9999; client_body_timeout 9999; client_header_timeout 9999; server { # 80番ポート(HTTP)でリクエストを待機する設定 listen 80; listen [::]:80; # ElasticIPアドレスを指定 server_name xxx.xxx.xxx.xxx; # 公開するディレクトリの設定 root /usr/share/nginx/html; # 約40Mバイトのファイルをインポートするとエラー(413 Request Entity Too Large)になったため client_max_body_size 3M; # 下記は必要な場合とない場合があるが記述しておく client_body_buffer_size 3M; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; # 静的ファイル配置ディレクトリとURLの対応付け location /static { alias /usr/share/nginx/html/static; } location / { # Host:ホスト名を転送 proxy_set_header Host $http_host; # X-Forwarded-For:送信元アドレスを転送 proxy_set_header X-Fowarded-For $proxy_add_x_forwarded_for; # X-Forwarded-Proto:URLスキーム(httpなど)を転送 proxy_set_header X-Fowrded-Proto $scheme; # 約40Mバイトのファイルをインポートするとエラー(413 Request Entity Too Large)になったため(上記併せ3箇所) client_max_body_size 3M; # URLが「/static」に該当しない場合(リバースプロキシ) proxy_pass http://127.0.0.1:8000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2; # listen [::]:443 ssl http2; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
settings.py(最終行に権限に関する設定を行いました)
from .settings_common import * # SECURITY WARNING: keep the secret key used in production secret! # settings_commonと共通 #SECRET_KEY = '*hto)tc=a23-pbhy@vmj-kpnr#of96n&jgyrqr@)e%9%c(d*nj' os.makedirs(os.path.join(BASE_DIR, 'logs'), exist_ok=True) # SECURITY WARNING: don't run with debug turned on in production! # デバッグモードを有効にするかどうか(本番運用では必ずFalseにする) DEBUG = False # 許可するホスト名のリスト ALLOWED_HOSTS = [os.environ.get('ALLOWED_HOSTS')] # 静的ファイルを配置する場所 STATIC_ROOT = '/usr/share/nginx/html/static' # ロギング LOGGING = { 'version': 1, # 1固定 'disable_existing_loggers': False, # ロガーの設定 'loggers': { # Djangoが利用するロガー 'django': { 'handlers': ['file'], 'level': 'INFO', }, # commonアプリケーションが利用するロガー 'level': 'INFO', }, # setting_worktypemasterアプリケーションが利用するロガー 'level': 'INFO', }, # setting_serialnomasterアプリケーションが利用するロガー 'setting_serialnomaster': { 'handlers': ['file'], 'level': 'INFO', }, }, # ハンドラの設定 'handlers': { 'file': { 'level': 'INFO', 'class': 'logging.handlers.TimedRotatingFileHandler', 'filename': os.path.join(BASE_DIR, 'logs/django.log'), 'formatter': 'prod', 'when': 'D', # ログローテーション(新しいファイルへの切り替え)間隔の 単位(D=日) 'interval': 1, # ログローテーション間隔(1日単位) 'backupCount': 7, # 保存しておくログファイル数 }, }, # フォーマッタの設定 'formatters': { 'prod': { 'format': '\t'.join([ '%(asctime)s', '[%(levelname)s]', '%(pathname)s(Line:%(lineno)d)', '%(message)s' ]) }, } } # エラー 413 (Request Entity Too Large)を回避するため FILE_UPLOAD_PERMISSIONS = 0o644
django.log
2020-11-17 19:52:06,922 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /nginx-logo.png 2020-11-17 19:52:06,924 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /poweredby.png 2020-11-17 19:55:16,211 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /nginx-logo.png 2020-11-17 19:55:16,213 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /poweredby.png 2020-11-17 19:58:58,605 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /nginx-logo.png 2020-11-17 19:58:58,606 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /poweredby.png 2020-11-17 20:20:07,443 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /nginx-logo.png 2020-11-17 20:20:07,464 [WARNING] /home/app_admin/venv_xxx_project/lib64/python3.7/site-packages/django/utils/log.py(Line:228) Not Found: /poweredby.png
早急に解決したいと思っております。どんなことでも構いません見落としてるポイントなどありましたらコメント頂けますでしょうか。どうかよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー