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 楼
可能根本无法禁用它,但是可行的解决方法是增加执行时间。在nginx教程站点上,其内容为:如果要增加服务器上所有站点的时限,可以
编辑主
nginx.conf
文件:vim /etc/nginx/nginx.conf
在http {..}部分添加以下内容
http {
fastcgi_read_timeout 300;
proxy_read_timeout 300;
}
并重新加载nginx的配置:
sudo service nginx reload
我已经使用了一个不太可能发生的相当大的值,即
999999
或使用时间单位,直到一天通过1d
。请注意,将值设置为
0
将立即导致网关超时错误。评论
亲爱的随机投票者,对这种做法的坏处发表评论会很好。
–k0pernikus
16年8月11日在16:37
@kb。有趣的是,我是OP,只是在等待真正的解决方案时发布了最可行的解决方法作为答案^^
–k0pernikus
16-10-17在8:41
哈哈,我完全想念你是OP。但是您的答案是正确的,您可以使(对于像我这样的未来Google员工)更加明确,没有办法禁用它。 =)
–kb。
16-10-17在10:21
感谢您提供有关0无法正常工作的信息!请注意,您可以使用可读的后缀指定时间单位,因此可以使用1d之类的值。
–布兰登
17年8月30日在20:30
我添加了那个和proxy_connect_timeout 600;到nginx.conf文件,但超时仍为60秒。还有什么我应该尝试的?
– andreszs
17-10-27在0:32
#2 楼
如果您使用的是AWS和Load Balancer,则应编辑空闲超时。我认为默认值为60秒评论
我理解为什么这被否决了,但是如果答案得到更新以解释其用例,那么它将更加有用。尽管这不能解决OP问题,但是考虑使用ELB还是很有用的,因为它们还会保持打开连接的时间有限制。
–doz87
18-10-2在5:04
@ doz87是的,这只是考虑因素
–szeljic
18-10-2在8:28
这确实值得检查,尤其是在我的案例中,即在AWS下使用Magento进行工作。好点@szeljic
–vnpnlz
18-10-30在8:23
谢谢兄弟,这对我有用,因为我使用AWS负载均衡器来分发到我的EC2实例
–VũThànhTâm
18/12/5在7:47
@foo,位于AWS的LoadBalancer页面上。 “描述”标签和“属性”部分。空闲超时。
–szeljic
20年8月26日在13:23
#3 楼
可以增加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
评论
关于每个超时nginx.org/en/docs/http/…
– TRiNE
20年4月15日在7:02
无论如何,有没有将一个变量设置为1800,然后分配该变量,我尝试使用set,但是它没有用
–马克斯·卡罗尔
20年8月7日在20:12
@MaxCarroll,我认为配置文件通常不支持变量。 Set不起作用,因为它不是bash。
– Vasantha Ganesh
20年8月9日在10:58
#4 楼
我一直在努力解决nginx 502超时错误,无法解决问题。但是,恰好是gunicorn导致超时错误。因此,您可能还需要检查一下fastcgi设置。对于gunicorn,它是:
gunicorn wsgi:application --timeout 300
评论
请考虑启动后台作业,然后让用户检查其状态。