与时俱进,精研业务
编者按:查明原因,因为服务器某一个网站用Nginx映射外网端口,但是没有配置超时时间。 解决办法:找到该网站location块中配置中关于proxy_pass部分,在其下面增加以下示范代码:#解决504 gateway time-out问题。网站服务器用了Nginx映射外网端口,但是没有配置超时时
一、查找原因
管理维护WEB服务器过程中,发现WEB服务器Nginx错误日志提示10061: No connection could be made because the target machine actively refused it错误,同时会给终端用户浏览器报504 gateway time-out错误提示。

经多方排查,初步确定原因为:
一是web应用程序提交动态请求的时候,nginx会直接把 请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客户端浏览器。如果后端正常的业务处理时间,如php-cgi进程处理相关的请求,超过了nginx配置文件中设置的超时时间(nginx.conf配置文件中,参数设置为:keepalive_timeout 60;),导致nginx给其返回504 gateway time-out错误。

二是WEB服务器中Nginx设置了proxy_pass,如果没有为其配置超时时间,以致出现服务器给浏览器报504 gateway time-out错误问题。

二、解决办法
找到该网站location模块配置中关于proxy_pass部分,在其下面增加以下示范代码(具体时间以适合自己的程序正常高效运转为准):
#——————————
#为Nginx映射外网端口配置超时时间,解决504 gateway time-out问题。
proxy_connect_timeout 60s;#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 60s;#后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 60s;#连接成功后,后端服务器响应时间(代理接收超时)
fastcgi_connect_timeout 60s;#指定nginx与后端fastcgi server连接超时时间
fastcgi_send_timeout 60s;#指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
fastcgi_read_timeout 60s;#指定nginx向后端传送响应超时时间(指已完成两次握手后向fastcgi传送响应超时时间)
#——————————
三、观察效果
重启Nginx,观察504 gateway time-out错误问题是否得到真正解决。
(以上均为维护服务器过程中的实操分享,如您有疑问可以添加邓杰律师微信交流)
本文标签:

专注执业领域事务
全力办理委托事项
扎实维护合法权益

24小时免费咨询
请输入您的联系电话,座机请加区号
