Nginx報:Nginx?-?504?Gateway?Time-out問題解決辦法
問題背景
線上有個系統(tǒng),最前端是設(shè)置了nginx作為代理,有個1個請求的接口需要耗時1.1分鐘左右,老是出現(xiàn)Nginx - 504 Gateway Time-out的錯誤。
問題分析
繞過nginx直接訪問應(yīng)用tomcat直接的端口進行相同條件測試,發(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代理到https地址忽略證書驗證配置的實現(xiàn)
在特定情況下,Nginx代理到HTTPS地址可能需要忽略證書驗證,本文就來介紹一下如何實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09利用Nginx的map指令實現(xiàn)頁面跳轉(zhuǎn)
每位網(wǎng)站運營人可能都會碰到一些情況,比如網(wǎng)站URL規(guī)則會進行調(diào)整,需求的不斷變化也會導(dǎo)致一些舊的URL無法訪問,這個時候可以使用Nginx的 map指令匹配這些舊的URL,并跳轉(zhuǎn)到新的URL規(guī)則,而且這種方式是在Nginx層面進行,不會對網(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)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-06-06nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實現(xiàn)示例
Nginx不僅僅只是一款反向代理和負載均衡服務(wù)器,本文主要介紹了nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03