nginxのタイムアウトを無効にする方法は?


47

ローカル開発マシンには、次のような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

応答として。

タイムアウトを無効にして、リバースプロキシを応答を永久に待機させるにはどうすればよいですか?また、設定をグローバルにするのが好きなので、プロキシごとに設定する必要はありません。


1
バックグラウンドジョブを開始し、ユーザーにそのステータスを後で確認させることを検討してください。
マイケルハンプトン

回答:


61

無効にすることはまったくできないかもしれませんが、実行可能な回避策は実行時間を増やすことです。でnginxのチュートリアルサイト、それが書かれていました。

サーバー上のすべてのサイトの時間制限を増やしたい場合は、メインnginx.confファイルを編集できます。

vim /etc/nginx/nginx.conf

http {..}セクションに以下を追加します

http {
     fastcgi_read_timeout 300;
     proxy_read_timeout 300;
}

nginxの設定を再読み込みします:

sudo service nginx reload

を介して1日まで発生する可能性が低い、つまり時間単位を使用するかなり大きな値を999999使用しました。1d

値をに設定0すると、すぐにゲートウェイタイムアウトエラーが発生することに注意してください。


3
親愛なるランダムなダウンボーター、このプラクティスの何が悪いのかについてのコメントはいいでしょう。
k0pernikus

7
@kb。私はOPであり、実際の解決策を待っている間に答えとして最も有効な回避策を投稿しただけなので、面白いです^^
k0pernikus

2
ハハ、あなたがOPだったことを完全に見落としました。しかし、あなたの答えは正しいものです、あなたはそれを無効にする方法がないことをさらに明確にすることができます(私のような将来のグーグルのために)。=)
kb。

5
0動作しないことについての情報をありがとう!読みやすいサフィックスを使用して時間単位を指定できるため、などの値を使用できることに注意してください1d
本名は

3
proxy_connect_timeout 600;それとnginx.confファイルの両方を追加しましたが、タイムアウトは60秒のままです。他に試してみるべきことはありますか?
andreszs

9

AWSおよびLoad Balancerを使用している場合、アイドルタイムアウトを編集する必要があります。デフォルトは60秒だと思う


これがなぜ反対票を投じられたのは理解していますが、そのユースケースを説明するために回答が更新された場合は、より役立つでしょう。これはOPに答えることにはなりませんが、ELBを使用している場合、接続を開いたままにしておく時間にも制限があるため、考慮するのに役立ちます。
doz87

@ doz87はい、それは単に検討のためのものです
-szeljic

これは特に、AWSでMagentoを使用している私のケースで確認する価値があります。良い点@szeljic
vnpnlz

おかげで仲間、私は私のEC2インスタンスに配布するためのAWSのロードバランサを使用するので、私にとってはこの作品
Vũタンタム

これはすべての賛成に値します-これがない場合、AWSユーザーはNGINX設定に関係なく60秒に制限されます
Aphire

4

私はnginx 502タイムアウトエラーと戦っていましたが、問題を解決できませんでした。ただし、タイムアウトエラーの原因となったgunicornでした。そのため、fastcgiの設定も確認する必要があります。

gunicornの場合:

gunicorn wsgi:application --timeout 300
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.