解决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权限被拒绝解决案例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • nginx中(13: Permission denied)权限问题的解决办法

    nginx中(13: Permission denied)权限问题的解决办法

    "nginx 13: Permission denied" 错误通常表示nginx进程没有足够的权限来访问特定的文件或目录,本文就来介绍一下解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Nginx配置文件详解

    Nginx配置文件详解

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。这篇文章主要介绍了Nginx配置详解,需要的朋友可以参考下
    2017-05-05
  • LNMP编译安装之nginx安装配置方法图文教程

    LNMP编译安装之nginx安装配置方法图文教程

    这篇文章主要为大家详细介绍了LNMP编译安装之nginx安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)

    Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)

    本文主要介绍了Nginx stream 配置代理(Nginx TCP/UDP 负载均衡),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 使用nginx+二级域名+https支持

    使用nginx+二级域名+https支持

    这篇文章主要介绍了使用nginx+二级域名+https支持,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 在Nginx服务器上屏蔽IP的一些基本配置方法分享

    在Nginx服务器上屏蔽IP的一些基本配置方法分享

    这篇文章主要介绍了在Nginx服务器上屏蔽IP的一些基本配置方法分享,包括对过多访问的IP配置脚本屏蔽等一些小技巧,的朋友可以参考下
    2015-12-12
  • nginx搭建高可用集群的实现方法

    nginx搭建高可用集群的实现方法

    本文主要介绍了nginx搭建高可用集群的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Nginx下让WordPress支持固定链接的伪静态规则

    Nginx下让WordPress支持固定链接的伪静态规则

    Nginx下让WordPress支持固定链接的伪静态规则,要让nginx支持wordpress固定链接非常简单,需要自己进行添加点配置代码
    2013-02-02
  • nginx容器配置文件独立的实现

    nginx容器配置文件独立的实现

    本文主要介绍了nginx容器配置文件独立,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12

最新评论