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