502?Bad?Gateway產(chǎn)生的原因及8個(gè)詳細(xì)的解決方法總結(jié)
1. 復(fù)現(xiàn)錯(cuò)誤
今天打開某網(wǎng)站時(shí),卻報(bào)出如下的錯(cuò)誤信息:
即報(bào)出502 Bad Gateway
的錯(cuò)誤信息,這個(gè)錯(cuò)誤信息是什么,又該如何解決呢?
接下來,我便詳細(xì)分析。
2. 分析錯(cuò)誤
2.1 502系列錯(cuò)誤代碼
502 Bad Gateway
是一種HTTP
協(xié)議的服務(wù)器端錯(cuò)誤狀態(tài)代碼,它表示作為網(wǎng)關(guān)或代理角色的服務(wù)器,從上游服務(wù)器(如tomcat
、php-fpm
)中接收到的響應(yīng)是無效的。
Gateway (網(wǎng)關(guān))
在計(jì)算機(jī)網(wǎng)絡(luò)體系中可以指代不同的設(shè)備,502
錯(cuò)誤通常不是客戶端能夠修復(fù)的,而是需要由途徑的Web
服務(wù)器或者代理服務(wù)器對(duì)其進(jìn)行修復(fù)。
502
系列錯(cuò)誤代碼如下列表所示:
HTTP Error 502 Bad Gateway HTTP
錯(cuò)誤502
網(wǎng)關(guān)錯(cuò)誤HTTP 502
502 Service Temporarily Overloaded 502
服務(wù)暫時(shí)超載Temporary Error (502)
臨時(shí)錯(cuò)誤 (502
)502 Server Error: The server encountered a temporary error and could not - - complete your 6. request 502
服務(wù)器錯(cuò)誤:服務(wù)器遇到臨時(shí)錯(cuò)誤,無法完成您的請(qǐng)求502 Bad Gateway Nginx 502
Nginx
錯(cuò)誤
2.2 5XX系列錯(cuò)誤代碼
500 Internal Server ErrorWeb
服務(wù)器遇到遇到阻止其無法完成其任務(wù)(即客戶端請(qǐng)求)的條件時(shí),將顯示此錯(cuò)誤501 Not Implemented
服務(wù)器無法支持或識(shí)別請(qǐng)求方法。 它缺少處理請(qǐng)求的功能,因此它會(huì)響應(yīng)此錯(cuò)誤502 Bad Gateway
服務(wù)器之間發(fā)生了錯(cuò)誤,充當(dāng)代理或網(wǎng)關(guān)時(shí),您的服務(wù)器在嘗試處理請(qǐng)求時(shí)未收到上游服務(wù)器的正確響應(yīng)503 Service Unavailable
由于正在進(jìn)行維護(hù)或服務(wù)器當(dāng)前過載而導(dǎo)致服務(wù)器無法處理請(qǐng)求的臨時(shí)情況504 Gateway Timeout
服務(wù)器再次充當(dāng)代理或網(wǎng)關(guān)時(shí),沒有及時(shí)從另一個(gè)服務(wù)器(例如DNS
)獲得響應(yīng),因此它無法處理請(qǐng)求505 HTTP Version Not Supported
當(dāng)您的Web
服務(wù)器不能或?qū)⒉恢С衷醋哉?qǐng)求的HTTP
協(xié)議版本時(shí),將發(fā)生他的錯(cuò)誤。 該錯(cuò)誤通常包含服務(wù)器為什么不合作的描述。
3. 產(chǎn)生502錯(cuò)誤的原因
連接超時(shí),我們向服務(wù)器器發(fā)送請(qǐng)求時(shí),由于服務(wù)器當(dāng)前連接太多,導(dǎo)致服務(wù)器方面無法給于正常的響應(yīng),產(chǎn)生此類報(bào)錯(cuò)。
具體如所示:
原因1
DNS
緩沖,針對(duì)這種情況,通常是因?yàn)槟阍谖撮_啟vpn
的情況下,訪問了facebook
這樣的網(wǎng)站。
此時(shí),你自然訪問不上,同時(shí)卻在本機(jī)留下了緩沖。
這種情況通常在幾分鐘之內(nèi)就可以訪問了。
也可以嘗試在dos
窗口運(yùn)行ipconfig /flushdns
,該命令會(huì)刷新DNS
緩沖。
原因2
你的瀏覽器開了代理什么的,確認(rèn)一下關(guān)掉代理。
原因3
dns
被劫持,即使使用國外的dns
,也會(huì)被劫持。
有些機(jī)子開vpn
能夠訪問,但有些機(jī)子不能。
排除了代理、防火墻、本地網(wǎng)絡(luò)的原因,此時(shí)同時(shí)ping
遠(yuǎn)程網(wǎng)站,比如facebook
。
不能訪問的機(jī)子,通常獲取了一個(gè)怪異的ip
, 從任何地方都ping
不通的ip
。
能訪問的機(jī)子ip
,在不能訪問的機(jī)子上直接可以訪問,也可以ping
通。這種情況我們可以去掉VPN
服務(wù)器的DNS
。
切換另外的dns
。在windows
系統(tǒng)中,可以在本地網(wǎng)絡(luò)連接的屬性中, 去掉默認(rèn)的dns
,選用國外的dns
,比如google
或opendns
。
4. 解決502錯(cuò)誤的方法
Nginx 502 Bad Gateway
錯(cuò)誤的原因及解決方法如下所示。
多數(shù)是后端的問題, 簡單的情況,可以按Ctrl + F5
強(qiáng)制刷新解決。
如果Ctrl + F5
無法強(qiáng)制刷新,可以使用Ctrl + Fn + F5
強(qiáng)制刷新。
在php服務(wù)
當(dāng)中,有兩個(gè)參數(shù)非常的重要:
max_requestst
max_children
具體的原因,必須要查看日志,才可以弄明白!
1.檢查PHP
基礎(chǔ)設(shè)置
修改/www/server/php/80/etc/php-fpm.conf
文件中的request_terminate_timeout = 100
,把100
改成5
。
php
執(zhí)行超時(shí),修改/usr/local/php/etc/php.ini
文件中的max_execution_time
, 將max_execution_time
為300
。
2.檢查FastCGI
進(jìn)程是否啟動(dòng)
執(zhí)行linux
的如下命令,查看是否啟動(dòng)了php-fpm
服務(wù):
ps aux | grep php
3.檢查FastCGI worker
進(jìn)程數(shù)是否足夠
執(zhí)行linux
的如下命令:
netstat -anpo | grep “php-cgi” | wc -l
判斷是否接近FastCGI
進(jìn)程,接近配置文件中設(shè)置的數(shù)值,表明worker
進(jìn)程數(shù)設(shè)置太少。
4.檢查FastCGI
執(zhí)行時(shí)間是否超時(shí)
PHP
程序執(zhí)行時(shí)間超過了Nginx
等待時(shí)間,可以適當(dāng)增加nginx.conf
配置文件中FastCGI
的timeout
時(shí)間,根據(jù)實(shí)際情況調(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ū)的設(shè)置是否過小
首先查找nginx
日志文件,目錄/var/log/nginx
,在日志中發(fā)現(xiàn)了如下錯(cuò)誤:
[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; ... }
請(qǐng)根據(jù)服務(wù)器已經(jīng)網(wǎng)站的情況自行增大上述兩個(gè)配置項(xiàng)。
7.檢查代理緩沖區(qū)的設(shè)置是否過小
這是使用了nginx
反向代理的情況。
如果header
過大,超出了默認(rèn)的1k
,就會(huì)引發(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.檢查默認(rèn)的php-cgi
的進(jìn)程數(shù)設(shè)置是否過少
在安裝好使用過程中出現(xiàn)502
問題,一般是因?yàn)槟J(rèn)php-cgi
進(jìn)程是5
個(gè)。
可能因?yàn)?code>phpcgi進(jìn)程不夠用而造成502
,需要修改/usr/local/php/etc/php-fpm.conf
將其中的max_children
的值適當(dāng)增加,也有可能是max_requests
的值不夠用。
需要說明的是這連個(gè)配置項(xiàng)占用內(nèi)存很大,請(qǐng)根據(jù)服務(wù)器配置進(jìn)行設(shè)置。否則可能起到反效果。
5. 補(bǔ)充說明
如果您上網(wǎng)時(shí)在您嘗試訪問的所有網(wǎng)站上都看這個(gè)問題,有如下兩種可能:
1.你的ISP
重大設(shè)備故障/過載
在種情況下,只有您的ISP
可以幫助您。
2.有問題的內(nèi)部互聯(lián)網(wǎng)連接如您的防火墻無法正常運(yùn)作。
你需要解決什么,那是阻止你進(jìn)入互聯(lián)網(wǎng)。
如果您只有在部分嘗試訪問的網(wǎng)站中出現(xiàn)此問題,那很可能是一個(gè)問題,即這些網(wǎng)站之一,其設(shè)備故障或超載。聯(lián)系你網(wǎng)站的管理員。
6. 參考文檔
http://chabaoo.cn/article/258603.htm
總結(jié)
到此這篇關(guān)于502 Bad Gateway產(chǎn)生的原因及8個(gè)詳細(xì)的解決方法的文章就介紹到這了,更多相關(guān)502 Bad Gateway的原因及解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 502 bad gateway是什么意思 502 bad gateway錯(cuò)誤解決方法
- Nginx 502 Bad Gateway錯(cuò)誤原因及解決方案
- Nginx?502?bad?gateway錯(cuò)誤解決的九種方案及原因
- Nginx 502 Bad Gateway錯(cuò)誤常見的4種原因和解決方法
- nginx服務(wù)器異常502 bad gateway原因排查
- 深入探討:Nginx 502 Bad Gateway錯(cuò)誤的解決方法
- Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯(cuò)誤解決方法 錯(cuò)誤解決辦法
- nginx加php-fpm出現(xiàn)502 bad gateway錯(cuò)誤的5種解決方法
- 解決Nginx + PHP(FastCGI)遇到的502 Bad Gateway錯(cuò)誤
- nginx 502 Bad Gateway 錯(cuò)誤解決辦法
相關(guān)文章
Nginx做NodeJS應(yīng)用負(fù)載均衡配置實(shí)例
這篇文章主要介紹了Nginx做NodeJS應(yīng)用負(fù)載均衡配置實(shí)例,本文直接給出配置實(shí)例,需要的朋友可以參考下2015-01-01nginx外網(wǎng)訪問內(nèi)網(wǎng)站點(diǎn)配置操作
這篇文章主要介紹了nginx外網(wǎng)訪問內(nèi)網(wǎng)站點(diǎn)配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08Nginx啟動(dòng)時(shí)80端口被占用的問題解決
本文主要介紹了在啟動(dòng)Nginx時(shí)遇到80端口被占用的問題及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12Linux centos7環(huán)境下Nginx安裝教程
這篇文章主要為大家詳細(xì)介紹了Linux centos7環(huán)境下Nginx安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Nginx實(shí)現(xiàn)TCP和UDP代理的方法步驟
Nginx 1.9.13 及以上版本支持TCP/UDP代理功能,通過配置監(jiān)聽端口、后端服務(wù)器地址等參數(shù),實(shí)現(xiàn)客戶端請(qǐng)求的轉(zhuǎn)發(fā)和響應(yīng)的返回,下面就來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2024-12-12Nginx+uwsgi+ssl配置https的詳細(xì)步驟
nginx是一個(gè)輕量級(jí)的web服務(wù)器,在處理靜態(tài)資源和高并發(fā)有優(yōu)勢(shì),uwsgi是一個(gè)基于python的高效率的協(xié)議,處理后端和動(dòng)態(tài)網(wǎng)頁有優(yōu)勢(shì),我這里使用的是Ubuntu18.04版本,服務(wù)器在阿里云,感興趣的朋友跟隨小編一起看看吧2023-10-10