k0p*_*kus 91 configuration nginx timeout
在本地开发机器上,我有一个 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;
}
Run Code Online (Sandbox Code Playgroud)
然而,如果我调试我的应用程序,响应可能会延迟无限长的时间,但在 30 秒后我得到:
504 Gateway Time-out
作为回应。
如何禁用超时并使我的反向代理永远等待响应?而且我喜欢全局设置,这样我就不必为每个代理设置它。
k0p*_*kus 107
可能根本无法禁用它,但可行的解决方法是增加执行时间。在nginx 教程站点上,它是这样写的:
如果要增加服务器上所有站点的时间限制,可以编辑主
nginx.conf文件:
vim /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
在 http{..} 部分添加以下内容
http {
fastcgi_read_timeout 300;
proxy_read_timeout 300;
}
Run Code Online (Sandbox Code Playgroud)
并重新加载 nginx 的配置:
sudo service nginx reload
Run Code Online (Sandbox Code Playgroud)
我使用了一个不太可能发生的相当大的值,即999999或使用时间单位,到一天通过1d.
请注意,将值设置为0将立即导致网关超时错误。
小智 23
可以增加 nginx 的超时时间,添加到@k0pernikus 的答案中,可以将以下内容添加到您的位置块中:
location /xyz {
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;
}
Run Code Online (Sandbox Code Playgroud)
这里 1800 是以秒为单位的。
更改配置后,验证语法:
nginx -t -c /some/path/nginx.conf
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令重新加载 nginx:
nginx -s reload
Run Code Online (Sandbox Code Playgroud)
小智 10
我一直在与 nginx 502 超时错误作斗争,但无法解决问题。但是,恰好是gunicorn导致超时错误。因此,您可能还需要检查您的 fastcgi 设置。
对于 gunicorn,它是:
gunicorn wsgi:application --timeout 300
Run Code Online (Sandbox Code Playgroud)