Nginx報:Nginx?-?504?Gateway?Time-out問題解決辦法
問題背景
線上有個系統(tǒng),最前端是設(shè)置了nginx作為代理,有個1個請求的接口需要耗時1.1分鐘左右,老是出現(xiàn)Nginx - 504 Gateway Time-out的錯誤。
問題分析
繞過nginx直接訪問應(yīng)用tomcat直接的端口進(jìn)行相同條件測試,發(fā)現(xiàn)沒有問題,排除接口和系統(tǒng)的問題,那么問題就是nginx超時參數(shù)配置的問題,很多參數(shù)沒有指定的情況默認(rèn)都是60S,所以應(yīng)該是這個原因。
解決方法
在nginx加入下面配置,可以解決Nginx - 504 Gateway Time-out問題
默認(rèn)60秒超時
http {
#配置在該區(qū)域會影響所有的server塊 以下解決nginx 504問題
proxy_connect_timeout 600; #單位秒 默認(rèn)60
proxy_send_timeout 600; #單位秒 默認(rèn)60
proxy_read_timeout 600; #單位秒 默認(rèn)60
}
location / {
# 以下解決nginx 504問題
proxy_send_timeout 600; #單位秒 默認(rèn)60
proxy_read_timeout 600; #單位秒 默認(rèn)60
proxy_connect_timeout 600; #單位秒 默認(rèn)60
}
拓展知識
- proxy_connect_timeouttime:與后端/上游服務(wù)器建立連接的超時時間,默認(rèn)為60s,此時間不超過75s。
- proxy_read_timeout time:設(shè)置從后端/上游服務(wù)器讀取響應(yīng)的超時時間,默認(rèn)為60s,此超時時間指的是兩次成功讀操作間隔時間,而不是讀取整個響應(yīng)體的超時時間,如果在此超時時間內(nèi)上游服務(wù)器沒有發(fā)送任何響應(yīng),則Nginx關(guān)閉此連接。
- proxy_send_timeout time:設(shè)置往后端/上游服務(wù)器發(fā)送請求的超時時間,默認(rèn)為60s,此超時時間指的是兩次成功寫操作間隔時間,而不是發(fā)送整個請求的超時時間,如果在此超時時間內(nèi)上游服務(wù)器沒有接收任何響應(yīng),則Nginx關(guān)閉此連接。
- client_header_timeout:默認(rèn)60s。指定等待client發(fā)送一個請求頭的超時時間(例如:GET / HTTP/1.1).僅當(dāng)在一次read中,沒有收到請求頭,才會算成超時。如果在超時時間內(nèi),client沒發(fā)送任何東西,nginx返回HTTP狀態(tài)碼408(“Request timed out”)
- client_body_timeout:默認(rèn)60s。
其他問題:
如果你遇到異常
IllegalStateException – if the getOutputStream method has already been called for this response object
那就說明你的程序中有地方調(diào)用過了,response.getOutputStream();
只需要與已有程序保持一致使用outputStream即可。
即將response.getWriter() 提換成 response.getOutputStream();
原因簡單來講就是這兩個方法互斥。調(diào)用了一個就不能調(diào)用另一個。
總結(jié)
到此這篇關(guān)于Nginx報:Nginx - 504 Gateway Time-out問題解決辦法的文章就介紹到這了,更多相關(guān)Nginx - 504 Gateway Time-out內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx如何進(jìn)行流量按比例轉(zhuǎn)發(fā)
Nginx 可以借助split_clients指令或通過 weight 參數(shù)以及 Lua 腳本實(shí)現(xiàn)流量按比例轉(zhuǎn)發(fā),下面小編就為大家介紹一下兩種方式具體的操作步驟吧2025-03-03
Nginx代理到https地址忽略證書驗證配置的實(shí)現(xiàn)
在特定情況下,Nginx代理到HTTPS地址可能需要忽略證書驗證,本文就來介紹一下如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09
利用Nginx的map指令實(shí)現(xiàn)頁面跳轉(zhuǎn)
每位網(wǎng)站運(yùn)營人可能都會碰到一些情況,比如網(wǎng)站URL規(guī)則會進(jìn)行調(diào)整,需求的不斷變化也會導(dǎo)致一些舊的URL無法訪問,這個時候可以使用Nginx的 map指令匹配這些舊的URL,并跳轉(zhuǎn)到新的URL規(guī)則,而且這種方式是在Nginx層面進(jìn)行,不會對網(wǎng)站性能產(chǎn)生影響。下面來一起看看吧。2016-10-10
服務(wù)器報錯nginx?502?Bad?Gateway的原因及如何解決詳解
項目啟動時莫名其妙網(wǎng)站訪問不了,502 Bad Gateway,下面這篇文章主要給大家介紹了關(guān)于服務(wù)器報錯nginx?502?Bad?Gateway的原因及如何解決的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Nginx多ip部署多站點(diǎn)的實(shí)現(xiàn)步驟
使用Nginx在具有多個IP地址的服務(wù)器上部署多個站點(diǎn),從而實(shí)現(xiàn)高效、安全的網(wǎng)站托管,本文主要介紹了Nginx多ip部署多站點(diǎn)的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-01-01
nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例
Nginx不僅僅只是一款反向代理和負(fù)載均衡服務(wù)器,本文主要介紹了nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

