nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx - 504 Gateway Time-out

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

作者:风行無痕

这篇文章主要给大家介绍了关于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
}

拓展知识

其他问题:

如果你遇到异常

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文