当前位置: 代码网 > 服务器>服务器>Nginx > nginx访问返回504问题及解决

nginx访问返回504问题及解决

2024年06月17日 Nginx 我要评论
nginx访问返回504现象nginx后端代理为报表服务,错误日志大量出现上游服务超时,页面访问也会出现504返回,查看后发现服务本身没问题,问题着重在nginx本身,报表服务本身属于大查询,返回较慢

nginx访问返回504

现象

nginx后端代理为报表服务,错误日志大量出现上游服务超时,页面访问也会出现504返回,查看后发现服务本身没问题,问题着重在nginx本身,报表服务本身属于大查询,返回较慢。

nginx默认本身后端超时为60s,大查询的返回大于60s所以会有几率出现504请求失败

报错

2022/08/05 13:00:24 [error] 3389#e: *1092213 upstream timed out (110: connection timed out) while reading upstream, client: 10.6. 18.19, server: localhost, request: “post /rcenter/rpt/api/showreport http/1.1”, upstream: “http://10.6.6.65:8880/rcenter/rpt/api/showreport” host: “10.6.6.67”

处理

增加后端超时时长参数

参数详解
proxy_connect_timeout与后端/上游服务器建立连接的超时时间
proxy_send_timeout与后端/上游服务器发送请求的超时时间
proxy_read_timeout与后端/上游服务器读取响应的超时时间
    server {
        listen 80;
        server_name localhost;
        location / {
                 root   html;
                 proxy_pass http://report;
		 proxy_set_header host $host;
		 proxy_set_header x-forwarded-for $remote_addr;
	   	 proxy_connect_timeout 600;
 	   	 proxy_send_timeout 600;
   		 proxy_read_timeout 600;

nginx504网关超时解决思路

环境

前端:nginx作代理

后端:nginx+php(耳朵分发服务)

问题:整套服务搭建完成之后,将打包好的ios包进行上传到分发服务器时,包传递完毕之后页面无法自动跳转

上述进度条走完之后,页面无法自动跳转。

解决思路

刚开始,以为是php的代码设置了超时时间,然后各种改代码,可是没什么卵用;然后以为是php有问题,然后修改php的超时时间,也没什么卵用。

最后,f12查看页面具体情况,发现:

原来是网关超时,应该是代理的nginx和后端nginx之间传输数据时发生超时。

最后,在前端nginx的配置文件中加入如下配置:

proxy_read_timeout 300

说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。

这个时间不是获得整个response的时间,而是两次reading操作的时间。

如果后端有大文件传输的需求时,需要将此值调大一些。

proxy_send_timeout 300

说明 这个指定设置了发送请求给upstream服务器的超时时间。

超时设置不是为了整个发送期间,而是在两次write操作期间。

如果超时后,upstream没有收到新的数据,nginx会关闭连接

以上两个参数默认是60s超时,,由于上传的ios包需要的时间超过了60s,导致网关超时。

至此,问题得到解决。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com