NGINXタイムアウトを変更できません

NGINXタイムアウトを変更できません

Nginx サーバーで 504 タイムアウトが発生しています: 504 Gateway Time-out。この Web サイトでは、ユーザーがカスタム データ ファイルをダウンロードできます。サイトはほとんどの状況で正常に動作し、ユーザーは問題なくいくつかのファイルをダウンロードできます。問題は、データ ファイルが要求されたときにのみ生成されることです。そのため、複雑なデータが要求されると、Python バックエンドがファイルを生成してダウンロードを開始するのに 1 分以上かかります。1 分以内に応答がないため、Nginx は を返します504 Gateway Time-out。ファイル自体は CSV ファイルでそれほど大きくないため、バックエンドがファイルを生成した後はダウンロードは高速ですが、Nginx の待機時間を長くする方法が必要です。

Nginx のタイムアウトを 1 分から約 10 分に増やす方法を探しています。

これまで試したこと:

ファイルを変更して、中括弧nginx.confの間に次の行を含めます。http {}

uwsgi_connect_timeout 75s;
proxy_connect_timeout 600;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;

私はまた、提案されたようtimeout.confにファイルを追加しようとしました/etc/nginx/conf.d/https://asdqwe.n​​et/blog/solutions-504-gateway-timeout-nginx/:

proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600; 

各変更を行った後、サーバーを再起動しましたが、1 分後にタイムアウトがまだ発生します。curl -oサービス プロバイダーの問題を回避するために、サーバー上で を実行してさらにテストしました。出力は次のようになりました。

$curl -o out-put-file.csv "./localhost/my/url"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   183   100   183   0    0       3      0  0:01:01  0:01:00  0:00:01    48

そしてこのエラーはerror.logに書き込まれます

2018/03/26 09:55:15 [error] 10105#10105: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 142.1.2.3, server: localhost, request: "GET /my/url", upstream: "uwsgi://unix:/tmp/my-applacation.sock", host: "142.1.2.3"

Nginx を使用せずにアプリケーションを実行して同じcurl -oリクエストを実行すると、リクエストにはかなり時間がかかります (要求されたデータに応じて最大 8 分) が、エラーやタイムアウトなしで正常に終了します。


実行すると、$ /usr/sbin/nginx -V 2>&1 | grep conf設定ファイルが次の場所にあることがわかります。--conf-path=/etc/nginx/nginx.conf


Nginx バージョン: nginx/1.12.2 および nginx/1.4.6 (Ubuntu)

OSバージョン: Ubuntu 16.04.1およびUbuntu 14.04.5 LTS


編集:

構成ファイル内の他の項目の変更が反映されるかどうかを確認するために、構成ファイル内のワーカー プロセスの数を変更してテストしました。確かに、その数を変更するとワーカーの数が変更され、ファイルは正しいファイルになり、変更が Nginx によって反映されます。タイムアウト (または完全な http セクション?) は変更されません。タイムアウトを 30 秒に設定してテストしましたが、それでも 1 分でタイムアウトします。さらに、これらの設定を入れてみましたsites-enabled/my_siteが、結果は同じです。

編集2:

私の知る限り、Nginx のドキュメントに従って値を正しく設定しています。 uwsgi_connect_timeout

ngx_http_proxy_モジュール

答え1

解けました!!

問題はuwsgiに関連していることが判明しましたが、

uwsgi_connect_timeout 75s;

私が実際に設定する必要があったのは

uwsgi_read_timeout 600s;

関連情報