Nginx报:Nginx - 504 Gateway Time-out问题解决办法

 更新时间:2024年01月22日 11:18:28   作者:风行無痕  
这篇文章主要给大家介绍了关于Nginx报:Nginx - 504 Gateway Time-out问题的解决办法,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时,需要的朋友可以参考下

问题背景

线上有个系统,最前端是设置了nginx作为代理,有个1个请求的接口需要耗时1.1分钟左右,老是出现Nginx - 504 Gateway Time-out的错误。

问题分析

绕过nginx直接访问应用tomcat直接的端口进行相同条件测试,发现没有问题,排除接口和系统的问题,那么问题就是nginx超时参数配置的问题,很多参数没有指定的情况默认都是60S,所以应该是这个原因。

解决方法

在nginx加入下面配置,可以解决Nginx - 504 Gateway Time-out问题

默认60秒超时

http {
    #配置在该区域会影响所有的server块 以下解决nginx 504问题
    proxy_connect_timeout 600; #单位秒 默认60
    proxy_send_timeout 600; #单位秒 默认60
    proxy_read_timeout 600; #单位秒 默认60
}

location / {
    # 以下解决nginx 504问题
    proxy_send_timeout 600; #单位秒 默认60
    proxy_read_timeout 600; #单位秒 默认60
    proxy_connect_timeout 600; #单位秒 默认60
}

拓展知识

  • proxy_connect_timeouttime:与后端/上游服务器建立连接的超时时间,默认为60s,此时间不超过75s。
  • proxy_read_timeout time:设置从后端/上游服务器读取响应的超时时间,默认为60s,此超时时间指的是两次成功读操作间隔时间,而不是读取整个响应体的超时时间,如果在此超时时间内上游服务器没有发送任何响应,则Nginx关闭此连接。
  • proxy_send_timeout time:设置往后端/上游服务器发送请求的超时时间,默认为60s,此超时时间指的是两次成功写操作间隔时间,而不是发送整个请求的超时时间,如果在此超时时间内上游服务器没有接收任何响应,则Nginx关闭此连接。
  • client_header_timeout:默认60s。指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”)
  • client_body_timeout:默认60s。

其他问题:

如果你遇到异常

IllegalStateException – if the getOutputStream method has already been called for this response object

那就说明你的程序中有地方调用过了,response.getOutputStream();

只需要与已有程序保持一致使用outputStream即可。

即将response.getWriter() 提换成 response.getOutputStream();

原因简单来讲就是这两个方法互斥。调用了一个就不能调用另一个。

总结

到此这篇关于Nginx报:Nginx - 504 Gateway Time-out问题解决办法的文章就介绍到这了,更多相关Nginx - 504 Gateway Time-out内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx共享内存机制详解

    nginx共享内存机制详解

    这篇文章主要介绍了nginx共享内存机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Nginx负载均衡下的webshell连接的实现

    Nginx负载均衡下的webshell连接的实现

    在解决shell文件上传问题、命令执行漂移等困难后,可实现正常的webshell上传,本文主要介绍了Nginx负载均衡下的webshell连接的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Nginx配置-日志格式配置方式

    Nginx配置-日志格式配置方式

    这篇文章主要介绍了Nginx配置-日志格式配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    这篇文章主要介绍了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法,涉及nginx平台的相关配置技巧,需要的朋友可以参考下
    2016-05-05
  • 一个等号引发的血案(谈Nginx正确的404配置)

    一个等号引发的血案(谈Nginx正确的404配置)

    这篇文章主要介绍了Nginx正确的404配置方法,本文根据实际案例总结而来,可以说是一个等号引发的血案!需要的朋友可以参考下
    2014-08-08
  • Nginx 域名转发的实现

    Nginx 域名转发的实现

    这篇文章主要介绍了Nginx 域名转发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 前端异常502 bad gateway的原因和解决办法

    前端异常502 bad gateway的原因和解决办法

    本文详细讲解了前端异常502 bad gateway的原因和解决办法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2021-12-12
  • Nginx 禁止直接访问目录或文件的操作方法

    Nginx 禁止直接访问目录或文件的操作方法

    Nginx 默认是不允许列出整个目录的,那么需要这样的功能怎么操作呢,下面小编给大家介绍下Nginx 禁止直接访问目录或文件的方法,需要的朋友可以参考下
    2022-10-10
  • Nginx负载均衡(架构之路)详解

    Nginx负载均衡(架构之路)详解

    这篇文章主要为大家详细介绍了Nginx负载均衡的相关资料,如何配置三台服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • nginx多location配置实例代码

    nginx多location配置实例代码

    公司测试环境使用nginx部署多个前端项目,下面这篇文章主要给大家介绍了关于nginx多location配置的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04

最新评论