解决Nginx网关超时出现504 GATEWAY TIMEOUT的问题

 更新时间:2023年11月22日 10:58:00   作者:黑夜开发者  
这篇文章主要给大家介绍了如何解决Nginx网关超时出现504 GATEWAY TIMEOUT的问题,文章通过代码示例和图文结合介绍的非常详细,有遇到相同问题的朋友可以参考阅读本文

一、背景

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

在这里插入图片描述

在这里插入图片描述

二、问题排查与解决

2.1 修改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

2.2 修改PHP配置

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

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

service php-fpm restart

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

2.3 进一步调整

经过了上面PHP的设置,发现也没有什么用,该超时还是超时。针对于一般的情况来说,上面的操作一般就能解决问题了。

然后又开始怀疑是不是vue框架本身的request有一个默认的超时。

于是通过浏览器把请求通过curl拿出来,去命令行执行。发现经过1分钟还是超时。

在这里插入图片描述

到现在为止实际上还是没有解决问题。于是比较头疼。

2.4 找到原因

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

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的情况。

三、网上其他该问题的原因

3.1 PHP 执行时间过长

当 PHP 脚本的执行时间超过了 Nginx 配置中设置的超时时间时,会导致 Gateway Timeout 错误。可以通过增加 fastcgi_read_timeout 配置项来延长超时时间。

3.2 后端服务错误

如果 PHP 后端服务发生了错误,并且没有及时返回响应,那么 Nginx 就会在超时时间内等待,然后抛出 Gateway Timeout 错误。可以通过检查 PHP 代码和日志来解决这个问题。

3.3 PHP-FPM 配置问题

PHP-FPM 是一种常用的 PHP FastCGI 管理器,在配置不正确的情况下可能会导致 Gateway Timeout 错误。可以通过检查 PHP-FPM 配置文件(通常位于 /etc/php-fpm.conf 或 /etc/php-fpm.d/www.conf)来解决问题。

3.4 Nginx 配置问题

Nginx 的配置文件也可能会导致 Gateway Timeout 错误。可以通过检查 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf)来解决问题。

3.5 网络问题

如果 PHP 后端服务无法正常连接或响应请求,那么也会导致 Gateway Timeout 错误。可以通过检查网络连接和防火墙设置来解决这个问题。

总结与思考

所以很多时候不要陷入到自己的常规思维里面去了,偶尔出去放松一下,回来或许有不一样的视角。

以上就是解决504 GATEWAY TIMEOUT Nginx网关超时的问题的详细内容,更多关于Nginx网关超时的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx反向代理多个服务器的实现方法

    Nginx反向代理多个服务器的实现方法

    这篇文章主要介绍了Nginx反向代理多个服务器的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • nginx配置gzip压缩优化传输效率加快页面访问速度的问题

    nginx配置gzip压缩优化传输效率加快页面访问速度的问题

    本文介绍了如何在nginx服务器中配置gzip压缩,通过压缩HTTP响应内容,减少数据传输大小和响应时间,从而提升网站性能和访问速度,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • 基于nginx反向代理获取用户真实Ip地址详解

    基于nginx反向代理获取用户真实Ip地址详解

    我们访问互联网上的服务时,大多数时客户端并不是直接访问到服务端的,而是客户端首先请求到反向代理,反向代理再转发到服务端实现服务访问,这篇文章主要给大家介绍了关于如何基于nginx反向代理获取用户真实Ip地址的相关资料,需要的朋友可以参考下
    2022-03-03
  • Nginx速查手册及常见问题

    Nginx速查手册及常见问题

    Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡,这篇文章主要介绍了Nginx速查手册及常见问题,,需要的朋友可以参考下
    2022-04-04
  • 访问nginx显示未找到站点的问题分析及解决方案

    访问nginx显示未找到站点的问题分析及解决方案

    当我们在安装好nginx准备访问80端口时,突然出现您的请求在Web服务器中没有找到对应的站点,所以本文给大家介绍了访问nginx显示未找到站点的问题分析及解决方案,需要的朋友可以参考下
    2024-03-03
  • Nginx部署Vue项目添加访问后缀方式

    Nginx部署Vue项目添加访问后缀方式

    文章介绍了如何根据需要为Vue项目配置不同的访问路径,并通过Nginx进行相应的配置,通过设置`vue.config.js`中的`publicPath`和`route`的`base`为`/app`,并将打包后的文件放入指定目录,然后在Nginx配置中使用`alias`和`try_files`指令来处理路径
    2025-01-01
  • windows下nginx+tomcat配置负载均衡的方法

    windows下nginx+tomcat配置负载均衡的方法

    这篇文章主要介绍了windows下nginx+tomcat配置负载均衡的方法,需要的朋友可以参考下
    2016-09-09
  • 详解Nginx静态服务配置(root和alias指令)

    详解Nginx静态服务配置(root和alias指令)

    这篇文章主要介绍了详解Nginx静态服务配置(root和alias指令),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Nginx源码安装的方法步骤

    Nginx源码安装的方法步骤

    这篇文章主要介绍了Nginx源码安装的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • nginx支持codeigniter的pathinfo模式url重写配置写法示例

    nginx支持codeigniter的pathinfo模式url重写配置写法示例

    这篇文章主要介绍了nginx支持codeigniter的pathinfo模式url重写配置写法示例,pathinfo模式是一种开发框架都爱用的路由模式,需要的朋友可以参考下
    2014-07-07

最新评论