一、問(wèn)題與背景:
最近在發(fā)布一個(gè)web項(xiàng)目,在測(cè)試環(huán)境都是可以的,發(fā)布到生產(chǎn)環(huán)境通過(guò)IP訪問(wèn)也是可以的,但是通過(guò)域名訪問(wèn)就出現(xiàn)504 gateway timeout。通過(guò)postman去測(cè)試接口也是一樣。ip和端口都可以通,域名卻不行,百思不得其解。通過(guò)一頓百度搜索,解析說(shuō)通過(guò)nginx配置文件配置這幾個(gè)地方
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 256k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
結(jié)果沒(méi)有效果,但應(yīng)該也有些場(chǎng)景應(yīng)該是可以的,比如說(shuō)通過(guò)IP訪問(wèn)也是報(bào)504的錯(cuò)誤,但是不是我這種場(chǎng)景。
然后繼續(xù)有指導(dǎo)說(shuō)通過(guò)在server配置
proxy_connect_timeout 6000; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))默認(rèn)60s
proxy_read_timeout 6000; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))默認(rèn)值60s
proxy_send_timeout 6000; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))默認(rèn)值60s
?然后也是沒(méi)效果。
應(yīng)該也有些場(chǎng)景應(yīng)該是可以的,比如說(shuō)通過(guò)IP訪問(wèn)也是報(bào)504的錯(cuò)誤,但是不是我這種場(chǎng)景。
上面的兩種方案應(yīng)該就是網(wǎng)絡(luò)上目前提供的兩種方案。但是并沒(méi)有解決我的問(wèn)題。
那么我們就要從頭理解 504錯(cuò)誤的場(chǎng)景了。也許并不完全是由于web服務(wù)器沒(méi)有反應(yīng)引起的。
二、504錯(cuò)誤的定義和解析:
504錯(cuò)誤代表網(wǎng)關(guān)超時(shí) (Gateway timeout),是指服務(wù)器作為網(wǎng)關(guān)或代理,但是沒(méi)有及時(shí)從上游服務(wù)器收到請(qǐng)求。
服務(wù)器(不一定是 Web 服務(wù)器)正在作為一個(gè)網(wǎng)關(guān)或代理來(lái)完成客戶(如您的瀏覽器或我們的 CheckUpDown 機(jī)器人)訪問(wèn)所需網(wǎng)址的請(qǐng)求。 為了完成您的 HTTP 請(qǐng)求, 該服務(wù)器訪問(wèn)一個(gè)上游服務(wù)器, 但沒(méi)得到及時(shí)的響應(yīng)。
這通常意味著上游服務(wù)器已關(guān)閉(不響應(yīng)網(wǎng)關(guān)?/ 代理),而不是上游服務(wù)器和網(wǎng)關(guān)/代理在交換數(shù)據(jù)的協(xié)議上不一致。
正常情況下,是由于被請(qǐng)求服務(wù)器發(fā)送超時(shí)引起。
三、導(dǎo)致504錯(cuò)誤的原理:
由作為代理或網(wǎng)關(guān)的服務(wù)器使用,表示不能及時(shí)地從遠(yuǎn)程服務(wù)器獲得應(yīng)答???。
任何客戶端在和網(wǎng)絡(luò)服務(wù)器通訊時(shí),都需經(jīng)過(guò)以下循環(huán):
從站點(diǎn)的 IP 名稱 ( 即站點(diǎn)的網(wǎng)址-URL, 不帶起始的 ‘http://') 獲得一個(gè)?IP?地址。這個(gè)對(duì)應(yīng)關(guān)系 ( 即由 IP 名稱向 IP 地址轉(zhuǎn)換的對(duì)應(yīng)關(guān)系 ) 由域名服務(wù)器 (DNSs) 提供。
打開一個(gè) IP?套接字?(socket) 連接到該 IP 地址。
通過(guò)該套接字寫 HTTP 數(shù)據(jù)流。
從Web服務(wù)器接受響應(yīng)的 HTTP 數(shù)據(jù)流。該數(shù)據(jù)流包括狀態(tài)編碼, 其值取決于 HTTP 協(xié)議 。 解析該數(shù)據(jù)流得到 狀態(tài)編碼和其他有用信息。
該錯(cuò)誤在以上所述的最后一步生成,即當(dāng)客戶端收到 HTTP 狀態(tài)編碼 并識(shí)別其為 ‘504’ 時(shí)。
這個(gè)問(wèn)題完全是由后端電腦之間 IP 通訊緩慢而產(chǎn)生, 可能包括Web服務(wù)器。 如果Web服務(wù)器由某一網(wǎng)站托管, 只有負(fù)責(zé)那個(gè)網(wǎng)站設(shè)置的人員 才能解決這個(gè)問(wèn)題。
網(wǎng)絡(luò)上代理和緩存的使用日漸增加。盡管CheckUpDown 機(jī)器人將總是試圖 ' 鉆入 ' 真正收管您的網(wǎng)站的電腦, 但是HTTP 請(qǐng)求實(shí)際上落在哪里并不能完全控制。 只要在處理HTTP請(qǐng)求的一連串電腦中, 有一個(gè)環(huán)節(jié)壞了,類似504的錯(cuò)誤就很容易產(chǎn)生。
四、ip能訪問(wèn)域名訪問(wèn)報(bào)504錯(cuò)誤最后解決:
那就可能是域名解析的環(huán)境加入防火墻的環(huán)節(jié)也可能出錯(cuò)導(dǎo)致504。結(jié)果后面排查發(fā)現(xiàn)域名解析對(duì)應(yīng)端口配置錯(cuò)誤導(dǎo)致了504.后面修改了策略,最終解決了問(wèn)題。
五、504錯(cuò)誤還可能是以下場(chǎng)景:
1. 計(jì)算機(jī)瀏覽器錯(cuò)誤:當(dāng)瀏覽器配備或設(shè)置中有一些錯(cuò)誤時(shí),就會(huì)出現(xiàn)這個(gè)錯(cuò)誤
2. DNS錯(cuò)誤:域DNS配備不當(dāng)可能導(dǎo)致瀏覽域時(shí)出錯(cuò)
3. 網(wǎng)絡(luò)不穩(wěn)定:代理與Web服務(wù)器之間的數(shù)據(jù)連接不良可能導(dǎo)致響應(yīng)延遲
4. Web服務(wù)器速度慢:Web服務(wù)器特性低可能導(dǎo)致網(wǎng)關(guān)ip請(qǐng)求超時(shí)
5. 504錯(cuò)誤的主要原因是防火墻配置錯(cuò)誤:防火墻規(guī)則不正確
504 Gateway 如何解決timeout
1. 刷新頁(yè)面
處理504 Gateway timeout錯(cuò)誤的第一步是點(diǎn)擊更新/重新加載按鈕,按F5或再次嘗試從搜索框中搜索URL,然后嘗試網(wǎng)頁(yè)??赡苁欠?wù)器
當(dāng)時(shí)收到的要求比平時(shí)多,很多要求都解決不了,導(dǎo)致短時(shí)間504 Gateway Timeout。
2. 重新啟動(dòng)各種設(shè)備
解調(diào)器、無(wú)線路由器、網(wǎng)絡(luò)交換機(jī)或其他網(wǎng)絡(luò)硬件的臨時(shí)問(wèn)題很可能會(huì)導(dǎo)致你看到的504 Gateway Timeout。嘗試重啟這種設(shè)備可能對(duì)每個(gè)人都有幫助。
3. 檢查代理服務(wù)器的設(shè)置
使用瀏覽器或程序 檢查代理服務(wù)器設(shè)置,確保其正確、準(zhǔn)確。網(wǎng)絡(luò)設(shè)置不正確很可能導(dǎo)致504 Gateway timeout錯(cuò)誤。
4. 更改DNS服務(wù)器
變更DNS服務(wù)器,特別是在互聯(lián)網(wǎng)上的各種設(shè)備遇到同樣錯(cuò)誤的情況下。您看到的504 Gateway Timeout的錯(cuò)誤很可能是由于您正在使用的DNS服務(wù)器問(wèn)題造成的。
5. 修復(fù)錯(cuò)誤的防火墻配置
防火墻是頁(yè)面的守護(hù)者。它可以保護(hù)您的網(wǎng)站免受故意訪問(wèn)者的攻擊。然而,您服務(wù)器中的網(wǎng)絡(luò)防火墻可能會(huì)遇到一些錯(cuò)誤、不正確的設(shè)備或適當(dāng)?shù)臉?biāo)準(zhǔn)阻止連接,這將導(dǎo)致504 Gateway timeout錯(cuò)誤。
6. 聯(lián)系您的服務(wù)器服務(wù)提供商
在某些情況下,試著聯(lián)系您的服務(wù)器服務(wù)提供商。這個(gè)問(wèn)題可以更有效地發(fā)現(xiàn)。
7. 稍后試著瀏覽這個(gè)網(wǎng)站文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-503602.html
如果任何其他方法都不成功,那么你最后的選擇就是稍微試著瀏覽一下這個(gè)網(wǎng)站。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-503602.html
到了這里,關(guān)于JAVA開發(fā)(記一次504 gateway timeout錯(cuò)誤排查過(guò)程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!