随笔 - 144  文章 - 0  评论 - 2  阅读 - 19万

解决504 GATEWAY TIMEOUT Nginx网关超时

最近遇到一个问题504 GATEWAY TIMEOUT的问题,在浏览器的NetWork里面看是这个效果。时间大概是60s。

在这里插入图片描述在这里插入图片描述

修改nginx配置

目前后端技术架构主要是nginx和php-fpm,前端主要是vue框架打包发布。
于是首先想到了是nginx超时时间或者与php的超时时间设置的过段,然后配置nginx.conf设置了这些参数。

http {
    ...
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    proxy_connect_timeout      300;
    proxy_read_timeout         300;
    proxy_send_timeout         300;
    keepalive_timeout  300;
    ...
}
nginx -s reload

修改PHP配置

然后发现并没有解决问题,504 GATEWAY TIMEOUT仍然在请求60秒左右被返回。然后又想到php的配置问题,决定调整一下php的一些参数。

vim /etc/php.ini
max_execution_time = 300 //设置执行时间为300秒保存

service php-fpm restart

// 然后去代码里面设置
set_time_limit(300);

进一步调整

经过了上面PHP的设置,发现也没有什么用,该超时还是超时。针对于一般的情况来说,上面的操作一般就能解决问题了。
然后又开始怀疑是不是vue框架本身的request有一个默认的超时。
于是通过浏览器把请求通过curl拿出来,去命令行执行。发现经过1分钟还是超时。
在这里插入图片描述
到现在为止实际上还是没有解决问题。于是比较头疼。

找到原因

接着分析原因。看是否域名访问后的第一步没有直接到服务器。

1. 在服务器上面执行如下命令,查看机器ip,得到ip A
curl ifconfig.me
2. 然后使用ping命令查看域名指向得到ip B
ping 你的域名
3. 发现A和B不一样,问题终于找到了,说明域名是经过中转才到达我们的服务器
真实的超时是在B机器上面,而不是我们自己的服务器,所以这就是为啥上面的一系列调整没有生效的原因。
4. 马上来测试一下。`windows + R` 输入 `C:\WINDOWS\system32\drivers\etc` 回车,找到`hosts`文件。
5. 打开`hosts` 末尾追加`ipA 你的域名`。然后保存。这样就让域名直接指向了我们自己的服务器。

然后在进行请求,发现请求时长就可以超过60秒了。也没有再出现504 GATEWAY TIMEOUT的情况。

思考

所以很多时候不要陷入到自己的常规思维里面去了,偶尔出去放松一下,回来或许有不一样的视角。今天内容就分享到这个,有疑问的,可以留言讨论哦,喜欢作者可以给个关注哟

posted on   黑夜开发者  阅读(783)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示