502?Bad?Gateway產(chǎn)生的原因及8個詳細的解決方法總結(jié)

1. 復現(xiàn)錯誤
今天打開某網(wǎng)站時,卻報出如下的錯誤信息:

即報出502 Bad Gateway的錯誤信息,這個錯誤信息是什么,又該如何解決呢?
接下來,我便詳細分析。
2. 分析錯誤
2.1 502系列錯誤代碼
502 Bad Gateway是一種HTTP協(xié)議的服務器端錯誤狀態(tài)代碼,它表示作為網(wǎng)關(guān)或代理角色的服務器,從上游服務器(如tomcat、php-fpm)中接收到的響應是無效的。
Gateway (網(wǎng)關(guān))在計算機網(wǎng)絡體系中可以指代不同的設備,502錯誤通常不是客戶端能夠修復的,而是需要由途徑的Web服務器或者代理服務器對其進行修復。
502系列錯誤代碼如下列表所示:
HTTP Error 502 Bad Gateway HTTP錯誤502網(wǎng)關(guān)錯誤HTTP 502502 Service Temporarily Overloaded 502服務暫時超載Temporary Error (502)臨時錯誤 (502)502 Server Error: The server encountered a temporary error and could not - - complete your 6. request 502服務器錯誤:服務器遇到臨時錯誤,無法完成您的請求502 Bad Gateway Nginx 502Nginx錯誤

2.2 5XX系列錯誤代碼
500 Internal Server ErrorWeb服務器遇到遇到阻止其無法完成其任務(即客戶端請求)的條件時,將顯示此錯誤501 Not Implemented服務器無法支持或識別請求方法。 它缺少處理請求的功能,因此它會響應此錯誤502 Bad Gateway服務器之間發(fā)生了錯誤,充當代理或網(wǎng)關(guān)時,您的服務器在嘗試處理請求時未收到上游服務器的正確響應503 Service Unavailable由于正在進行維護或服務器當前過載而導致服務器無法處理請求的臨時情況504 Gateway Timeout服務器再次充當代理或網(wǎng)關(guān)時,沒有及時從另一個服務器(例如DNS)獲得響應,因此它無法處理請求505 HTTP Version Not Supported當您的Web服務器不能或?qū)⒉恢С衷醋哉埱蟮?code>HTTP協(xié)議版本時,將發(fā)生他的錯誤。 該錯誤通常包含服務器為什么不合作的描述。
3. 產(chǎn)生502錯誤的原因
連接超時,我們向服務器器發(fā)送請求時,由于服務器當前連接太多,導致服務器方面無法給于正常的響應,產(chǎn)生此類報錯。
具體如所示:
原因1
DNS緩沖,針對這種情況,通常是因為你在未開啟vpn的情況下,訪問了facebook這樣的網(wǎng)站。
此時,你自然訪問不上,同時卻在本機留下了緩沖。
這種情況通常在幾分鐘之內(nèi)就可以訪問了。
也可以嘗試在dos窗口運行ipconfig /flushdns,該命令會刷新DNS緩沖。
原因2
你的瀏覽器開了代理什么的,確認一下關(guān)掉代理。
原因3
dns被劫持,即使使用國外的dns,也會被劫持。
有些機子開vpn能夠訪問,但有些機子不能。
排除了代理、防火墻、本地網(wǎng)絡的原因,此時同時ping遠程網(wǎng)站,比如facebook。
不能訪問的機子,通常獲取了一個怪異的ip, 從任何地方都ping不通的ip。
能訪問的機子ip,在不能訪問的機子上直接可以訪問,也可以ping通。這種情況我們可以去掉VPN服務器的DNS。
切換另外的dns。在windows系統(tǒng)中,可以在本地網(wǎng)絡連接的屬性中, 去掉默認的dns,選用國外的dns,比如google或opendns。
4. 解決502錯誤的方法
Nginx 502 Bad Gateway錯誤的原因及解決方法如下所示。
多數(shù)是后端的問題, 簡單的情況,可以按Ctrl + F5強制刷新解決。
如果Ctrl + F5無法強制刷新,可以使用Ctrl + Fn + F5強制刷新。
在php服務當中,有兩個參數(shù)非常的重要:
max_requeststmax_children
具體的原因,必須要查看日志,才可以弄明白!
1.檢查PHP基礎(chǔ)設置
修改/www/server/php/80/etc/php-fpm.conf文件中的request_terminate_timeout = 100 ,把100改成5。
php執(zhí)行超時,修改/usr/local/php/etc/php.ini文件中的max_execution_time, 將max_execution_time為300。
2.檢查FastCGI進程是否啟動
執(zhí)行linux的如下命令,查看是否啟動了php-fpm服務:
ps aux | grep php
3.檢查FastCGI worker進程數(shù)是否足夠
執(zhí)行linux的如下命令:
netstat -anpo | grep “php-cgi” | wc -l
判斷是否接近FastCGI進程,接近配置文件中設置的數(shù)值,表明worker進程數(shù)設置太少。
4.檢查FastCGI執(zhí)行時間是否超時
PHP程序執(zhí)行時間超過了Nginx等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間,根據(jù)實際情況調(diào)高以下參數(shù)值:
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
5.檢查FastCGI Buffer是否足夠
nginx和apache一樣,有前端緩沖限制,可以調(diào)整緩沖參數(shù),如下所示:
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
6.檢查FastCGI緩沖區(qū)的設置是否過小
首先查找nginx日志文件,目錄/var/log/nginx,在日志中發(fā)現(xiàn)了如下錯誤:
[error] 15421
#0: *16 upstream sent too big header while reading response header from upstream
意思是nginx緩沖區(qū)bug造成,網(wǎng)站頁面占用緩沖區(qū)可能過大。
增加緩沖區(qū)徹底解決了Nginx 502 Bad Gateway,方法如下:
http {
...
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
...
}請根據(jù)服務器已經(jīng)網(wǎng)站的情況自行增大上述兩個配置項。
7.檢查代理緩沖區(qū)的設置是否過小
這是使用了nginx反向代理的情況。
如果header過大,超出了默認的1k,就會引發(fā)upstream sent too big header,如下所示:
server {
listen 80;
server_name *.test.com;
location / {
# 加這3行
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
# 添加這3行
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}
}8.檢查默認的php-cgi的進程數(shù)設置是否過少
在安裝好使用過程中出現(xiàn)502問題,一般是因為默認php-cgi進程是5個。
可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf將其中的max_children的值適當增加,也有可能是max_requests的值不夠用。
需要說明的是這連個配置項占用內(nèi)存很大,請根據(jù)服務器配置進行設置。否則可能起到反效果。
5. 補充說明
如果您上網(wǎng)時在您嘗試訪問的所有網(wǎng)站上都看這個問題,有如下兩種可能:
1.你的ISP重大設備故障/過載
在種情況下,只有您的ISP可以幫助您。
2.有問題的內(nèi)部互聯(lián)網(wǎng)連接如您的防火墻無法正常運作。
你需要解決什么,那是阻止你進入互聯(lián)網(wǎng)。
如果您只有在部分嘗試訪問的網(wǎng)站中出現(xiàn)此問題,那很可能是一個問題,即這些網(wǎng)站之一,其設備故障或超載。聯(lián)系你網(wǎng)站的管理員。
6. 參考文檔
http://www.dbjr.com.cn/article/258603.htm
總結(jié)
到此這篇關(guān)于502 Bad Gateway產(chǎn)生的原因及8個詳細的解決方法的文章就介紹到這了,更多相關(guān)502 Bad Gateway的原因及解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 502 bad gateway是什么意思 502 bad gateway錯誤解決方法
- Nginx 502 Bad Gateway錯誤原因及解決方案
- Nginx?502?bad?gateway錯誤解決的九種方案及原因
- Nginx 502 Bad Gateway錯誤常見的4種原因和解決方法
- nginx服務器異常502 bad gateway原因排查
- 深入探討:Nginx 502 Bad Gateway錯誤的解決方法
- Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯誤解決方法 錯誤解決辦法
- nginx加php-fpm出現(xiàn)502 bad gateway錯誤的5種解決方法
- 解決Nginx + PHP(FastCGI)遇到的502 Bad Gateway錯誤
- nginx 502 Bad Gateway 錯誤解決辦法
相關(guān)文章
nginx外網(wǎng)訪問內(nèi)網(wǎng)站點配置操作
這篇文章主要介紹了nginx外網(wǎng)訪問內(nèi)網(wǎng)站點配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Linux centos7環(huán)境下Nginx安裝教程
這篇文章主要為大家詳細介紹了Linux centos7環(huán)境下Nginx安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03

