ローカル開発マシンでは、 私はnginxリバースプロキシを持っています のように:
server {
listen 80;
server_name myvirtualhost1.local;
location / {
proxy_pass http://127.0.0.1:8080;
}
server {
listen 80;
server_name myvirtualhost2.local;
location / {
proxy_pass http://127.0.0.1:9090;
}
しかし、アプリケーションをデバッグすると、応答が無限に遅れる可能性がありますが、30秒後には次のようになります。
504 Gateway Time-out
応答として。
タイムアウトを無効にして、リバースプロキシに応答を永久に待機させるにはどうすればよいですか?また、設定をグローバルにしたいので、プロキシごとに設定する必要がありません。
これを無効にすることはまったくできないかもしれませんが、実行可能な回避策は実行時間を増やすことです。 nginxチュートリアルサイト には次のように書かれています。
サーバー上のすべてのサイトの時間制限を増やしたい場合は、メインの
nginx.conf
ファイルを編集できます。
vim /etc/nginx/nginx.conf
以下をhttp {..}セクションに追加します
http {
fastcgi_read_timeout 300;
proxy_read_timeout 300;
}
そしてnginxの設定をリロードしてください:
Sudo service nginx reload
起こりそうにないかなり大きな値、つまり999999
または time units を使用して、1d
を介して1日にしました。
値を0
に設定すると、ゲートウェイタイムアウトエラーがすぐに発生することに注意してください。
AWSとロードバランサーを使用している場合は、アイドルタイムアウトを編集する必要があります。デフォルトは60秒だと思います
Nginx 502タイムアウトエラーと戦っており、問題を解決できませんでした。しかし、それはたまたまタイムアウトエラーの原因となったgunicornでした。そのため、fastcgi設定を確認する必要がある場合もあります。
Gunicornの場合:
gunicorn wsgi:application --timeout 300
Nginxのタイムアウトを増やしたり、@ k0pernikusの回答に追加したりすることができます。以下をロケーションブロックに追加できます。
location /xyz {
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;
}
ここでは1800秒です。
構成を変更した後、次のコマンドで構文を確認します。
nginx -t -c /some/path/nginx.conf
次にnginxをリロードします:
nginx -s reload