為您提供行業(yè)資訊、活動(dòng)公告、產(chǎn)品發(fā)布,匯聚最前沿流行的云計算技術(shù)
前端報502 bad gateway怎么回事?502 Bad Gateway服務(wù)器作為網(wǎng)關(guān)或者代理時(shí),為了完成請求訪(fǎng)問(wèn)下一個(gè)服務(wù)器,但該服務(wù)器返回了非法的應答。
解決辦法是:再刷新一下網(wǎng)頁(yè)或清理一下電腦的緩沖文件在打開(kāi)你想打開(kāi)的網(wǎng)頁(yè)就好了。一般情況下,這種辦法是行得通的,但也不排除你所訪(fǎng)問(wèn)的網(wǎng)頁(yè)被屏蔽的可能,如果你所訪(fǎng)問(wèn)的網(wǎng)頁(yè)被屏蔽的話(huà),就不管你怎么刷新也是沒(méi)用的了。
1.什么是502 bad gateway報錯
簡(jiǎn)單來(lái)說(shuō)502是報錯類(lèi)型代碼bad gateway錯誤的網(wǎng)關(guān)
2.產(chǎn)生502錯誤的原因
連接超時(shí) 我們向服務(wù)器器發(fā)送請求 由于服務(wù)器當前鏈接太多,導致服務(wù)器方面無(wú)法給于正常的響應,產(chǎn)生此類(lèi)報錯,具體如下:
第一個(gè)原因:
DNS 緩沖。 這種情況的通常原因是因為你在未開(kāi)啟vp*的情況下訪(fǎng)問(wèn)了facebook這樣的網(wǎng)站。
這個(gè)時(shí)候自然訪(fǎng)問(wèn)不上,同時(shí)卻在本機留下了緩沖。
這種情況通常在幾分鐘之內就可以訪(fǎng)問(wèn)了。也可以嘗試 在dos窗口運行 ipconfig /flushdns,該命令會(huì )刷新DNS緩沖。
第二個(gè)原因:
你的瀏覽器開(kāi)了代理什么的。確認一下關(guān)掉代理。
第三個(gè)原因:
dns 被劫持了,即使使用國外的dns,也會(huì )被劫持。有些機子開(kāi)vp*能夠訪(fǎng)問(wèn),有些 機子確不能。并且排除了代理、防火墻、本地網(wǎng)絡(luò )的原因。這個(gè)時(shí)候同時(shí)ping遠程網(wǎng)站,比如facebook。不能訪(fǎng)問(wèn)的機子通常獲取了一個(gè)怪異的ip, 從任何地方都ping不通的ip。而能訪(fǎng)問(wèn)的機子ip,在不能訪(fǎng)問(wèn)的機子上直接可以訪(fǎng)問(wèn),也可以ping通。這種情況我們可以去掉VP*服務(wù)器的DNS。
切換另外的dns。在windows系統中,可以在本地網(wǎng)絡(luò )連接的屬性中, 去掉默認的dns,選用國外的dns,比如google的?;騩pendns。
3.502錯誤的HTTP周期
任何客戶(hù)端(如Web瀏覽器或我們的CheckUpDown機器人)經(jīng)過(guò)下列循環(huán)時(shí),與您的Web服務(wù)器溝通:
獲取您的網(wǎng)站IP地址的IP名稱(chēng)(您的網(wǎng)站URL的領(lǐng)導’ http:// ‘ ) 。這查找(轉換的知識產(chǎn)權名稱(chēng), IP地址)所提供的域名服務(wù)器( DNSs ) 。
打開(kāi)一個(gè)IP套接字連接到該IP地址。寫(xiě)一個(gè)HTTP數據流通過(guò)該套接字。
從您的響應的Web服務(wù)器收到一個(gè)HTTP數據流。此數據流包含狀態(tài)碼的值是由HTTP協(xié)議。解析此數據流的狀態(tài)碼和其他有用信息。
這個(gè)錯誤發(fā)生在最后一步時(shí),上面的客戶(hù)端收到一個(gè)HTTP狀態(tài)碼,它確認為502 ‘ 。
4.固定502錯誤
一般這個(gè)問(wèn)題是由于不良的IP之間的溝通后端計算機,包括您可能?chē)L試訪(fǎng)問(wèn)的在Web服務(wù)器上的網(wǎng)站。在分析這個(gè)問(wèn)題,您應該完全清除瀏覽器緩存。
如果您上網(wǎng)時(shí)在您嘗試訪(fǎng)問(wèn)的所有網(wǎng)站上都看這個(gè)問(wèn)題,有兩種可能
1 )你的ISP出了重大設備故障/過(guò)載
2 )有問(wèn)題的內部互聯(lián)網(wǎng)連接如您的防火墻無(wú)法正常運作。
在第一種情況下,只有您的ISP可以幫助您。在第二種情況下,就需您自己解決任何阻止您進(jìn)入互聯(lián)網(wǎng)的問(wèn)題。
如果您只有在部分嘗試訪(fǎng)問(wèn)的網(wǎng)站中出現此問(wèn)題,那就很可能是一個(gè)問(wèn)題,即這些網(wǎng)站之一,其設備故障或超載。聯(lián)系網(wǎng)站的管理員。
5.出現502 bad gateway如何解決問(wèn)題
最簡(jiǎn)單的方法:CTRL+F5強制刷新
最好的解決辦法當然還是在服務(wù)器上做 對大家來(lái)說(shuō)不太可能 ,那么我們有什么解救的方法呢?說(shuō)白了很簡(jiǎn)單,就是——刷新(不是一般的刷新哦)
刷新的原理 :很多人可能不知道 刷新也是有兩種的。所謂刷新其實(shí)就是從服務(wù)器下載數據到本地的硬盤(pán)瀏覽器, 再從本地硬盤(pán)種讀取數據到瀏覽器顯示給我們看。
①基本刷新:就是點(diǎn)擊刷新或者使用F5快捷鍵,基本刷新只是從本地的硬盤(pán)重新拿取數據到瀏覽器,并不重新向服務(wù)器發(fā)出請求。大部分用戶(hù)很多時(shí)候都是這樣刷新的,遇到502報錯的就沒(méi)有任何效果。
②從服務(wù)器刷新: 如果你重新直接點(diǎn)擊你想要瀏覽的網(wǎng)頁(yè)鏈接,你會(huì )發(fā)現剛才還是顯示502 bad getway的頁(yè)面現在又可以正常瀏覽了!明白道理了吧?當你點(diǎn)擊你想要瀏覽的網(wǎng)頁(yè)鏈接的時(shí)候,是會(huì )從服務(wù)器重新下載數據的。 解決方法就是從服務(wù)器上刷新:快捷鍵 ctrl+F5,這樣就是重新向服務(wù)器發(fā)送請求了。如果服務(wù)器能正常給予你響應你就可以看到頁(yè)面了。
另附:
nginx 502 bad gateway 錯誤的原因及解決方法
nginx 502 bad Gateway 的錯誤已經(jīng)遇到好幾次了,這里做一下記錄,備忘哈哈。
會(huì )有好多種情況出現502錯誤,下面我們分情況來(lái)說(shuō)一下。
一、fastcgi緩沖區設置過(guò)小
出現錯誤,首先要查找nginx的日志文件,目錄為/var/log/nginx,在日志中發(fā)現了如下錯誤。
2013/01/17 13:33:47 [error] 15421#0: *16 upstream sent too big header while reading response header from upstream
查閱了一下資料,大意是nginx緩沖區有一個(gè)bug造成的,我們網(wǎng)站的頁(yè)面消耗占用緩沖區可能過(guò)大。
網(wǎng)上查找了一下解決方法,在國外網(wǎng)站看到了一個(gè)增加緩沖區的方法,徹底解決了Nginx 502 Bad Gateway的問(wèn)題。方法如下:
http {
…
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
…
}
請根據服務(wù)器已經(jīng)網(wǎng)站的情況自行增大上述兩個(gè)配置項。
二、代理緩沖區設置過(guò)小
如果你使用的是nginx反向代理,如果header過(guò)大,超出了默認的1k,就會(huì )引發(fā)上述的upstream sent too big header (說(shuō)白了就是nginx把外部請求給后端處理,后端返回的header太大,nginx處理不過(guò)來(lái)就會(huì )導致502。
server {
listen 80;
server_name *.lxy.me;
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;
…………
}
三、默認php-cgi的進(jìn)程數設置過(guò)少
在安裝好使用過(guò)程中出現502問(wèn)題,一般是因為默認php-cgi進(jìn)程是5個(gè),可能因為phpcgi進(jìn)程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加。也有可能是max_requests值不夠用。需要說(shuō)明的是這連個(gè)配置項占用內存很大,請根據服務(wù)器配置進(jìn)行設置。否則可能起到反效果。
四、php執行超時(shí)
php執行超時(shí),修改/usr/local/php/etc/php.ini 將max_execution_time 改為300
五、nginx等待時(shí)間超時(shí)
部分PHP程序的執行時(shí)間超過(guò)了Nginx的等待時(shí)間,可以適當增加nginx.conf配置文件中FastCGI的timeout時(shí)間
http {
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
nginx 502 bad gateway
一些運行在Nginx上的網(wǎng)站有時(shí)候會(huì )出現“502 Bad Gateway”錯誤,有些時(shí)候甚至頻繁的出現。以下是小編搜集整理的一些Nginx 502錯誤的排查方法,供參考:
Nginx 502錯誤的原因比較多,是因為在代理模式下后端服務(wù)器出現問(wèn)題引起的。這些錯誤一般都不是nginx本身的問(wèn)題,一定要從后端找原因!但nginx把這 些出錯都攬在自己身上了,著(zhù)實(shí)讓nginx的推廣者備受置疑,畢竟從字眼上理解,bad gateway?不就是bad nginx嗎?讓不了解的人看到,會(huì )直接把責任推在nginx身上,希望nginx下一個(gè)版本會(huì )把出錯提示寫(xiě)稍微友好一些,至少不會(huì )是現在簡(jiǎn)單的一句 502 Bad Gateway,另外還不忘附上自己的大名。
Nginx 502的觸發(fā)條件
502錯誤最通常的出現情況就是后端主機當機。在upstream配置里有這么一項配置:proxy_next_upstream,這個(gè)配置指定了 nginx在從一個(gè)后端主機取數據遇到何種錯誤時(shí)會(huì )轉到下一個(gè)后端主機,里頭寫(xiě)上的就是會(huì )出現502的所有情況拉,默認是error timeout。error就是當機、斷線(xiàn)之類(lèi)的,timeout就是讀取堵塞超時(shí),比較容易理解。我一般是全寫(xiě)上的:
proxy_next_upstream error timeout invalid_header http_500 http_503;
不過(guò)現在可能我要去掉http_500這一項了,http_500指定后端返回500錯誤時(shí)會(huì )轉一個(gè)主機,后端的jsp出錯的話(huà),本來(lái)會(huì )打印一堆 stacktrace的錯誤信息,現在被502取代了。但公司的程序員可不這么認為,他們認定是nginx出現了錯誤,我實(shí)在沒(méi)空跟他們解釋502的原理 了……
503錯誤就可以保留,因為后端通常是apache resin,如果apache死機就是error,但resin死機,僅僅是503,所以還是有必要保留的。
解決辦法
遇到502問(wèn)題,可以?xún)?yōu)先考慮按照以下兩個(gè)步驟去解決。
1、查看當前的PHP FastCGI進(jìn)程數是否夠用:
netstat -anpo | grep “php-cgi” | wc -l
如果實(shí)際使用的“FastCGI進(jìn)程數”接近預設的“FastCGI進(jìn)程數”,那么,說(shuō)明“FastCGI進(jìn)程數”不夠用,需要增大。
2、部分PHP程序的執行時(shí)間超過(guò)了Nginx的等待時(shí)間,可以適當增加nginx.conf配置文件中FastCGI的timeout時(shí)間,例如:
http {
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
……
php.ini中memory_limit設低了會(huì )出錯,修改了php.ini的memory_limit為64M,重啟nginx,發(fā)現好了,原來(lái)是PHP的內存不足了。
如果這樣修改了還解決不了問(wèn)題,可以參考下面這些方案:
一、max-children和max-requests
一臺服務(wù)器上運行著(zhù)nginx php(fpm) xcache,訪(fǎng)問(wèn)量日均 300W pv左右。
最近經(jīng)常會(huì )出現這樣的情況:php頁(yè)面打開(kāi)很慢,cpu使用率突然降至很低,系統負載突然升至很高,查看網(wǎng)卡的流量,也會(huì )發(fā)現突然降到了很低。這種情況只持續數秒鐘就恢復了。
檢查php-fpm的日志文件發(fā)現了一些線(xiàn)索。
Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200 Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″ Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587
在這幾句的前面,是1000多行的關(guān)閉children和開(kāi)啟children的日志。
原來(lái),php-fpm有一個(gè)參數 max_requests,該參數指明了,每個(gè)children最多處理多少個(gè)請求后便會(huì )被關(guān)閉,默認的設置是500。因為php是把請求輪詢(xún)給每個(gè) children,在大流量下,每個(gè)childre到達max_requests所用的時(shí)間都差不多,這樣就造成所有的children基本上在同一時(shí)間 被關(guān)閉。
在這期間,nginx無(wú)法將php文件轉交給php-fpm處理,所以cpu會(huì )降至很低(不用處理php,更不用執行sql),而負載會(huì )升至很高(關(guān) 閉和開(kāi)啟children、nginx等待php-fpm),網(wǎng)卡流量也降至很低(nginx無(wú)法生成數據傳輸給客戶(hù)端)
解決問(wèn)題很簡(jiǎn)單,增加children的數量,并且將 max_requests 設置為 0 或者一個(gè)比較大的值:
打開(kāi) /usr/local/php/etc/php-fpm.conf調大以下兩個(gè)參數(根據服務(wù)器實(shí)際情況,過(guò)大也不行)
5120 600
然后重啟php-fpm。
二、增加緩沖區容量大小
將nginx的error log打開(kāi),發(fā)現“pstream sent too big header while reading response header from upstream”這樣的錯誤提示。查閱了一下資料,大意是nginx緩沖區有一個(gè)bug造成的,我們網(wǎng)站的頁(yè)面消耗占用緩沖區可能過(guò)大。參考老外寫(xiě)的修 改辦法增加了緩沖區容量大小設置,502問(wèn)題徹底解決。后來(lái)系統管理員又對參數做了調整只保留了2個(gè)設置參數:client head buffer,fastcgi buffer size。
三、request_terminate_timeout
如果主要是在一些post或者數據庫操作的時(shí)候出現502這種情況,而不是在靜態(tài)頁(yè)面操作中常見(jiàn),那么可以查看一下php-fpm.conf設置中的一項:
request_terminate_timeout
這個(gè)值是max_execution_time,就是fast-cgi的執行腳本時(shí)間。
0s
0s為關(guān)閉,就是無(wú)限執行下去。(當時(shí)裝的時(shí)候沒(méi)仔細看就改了一個(gè)數字)問(wèn)題解決了,執行很長(cháng)時(shí)間也不會(huì )出錯了。優(yōu)化fastcgi中,還可以改改這個(gè)值5s 看看效果。
php-cgi進(jìn)程數不夠用、php執行時(shí)間長(cháng)、或者是php-cgi進(jìn)程死掉,都會(huì )出現502錯誤。
更多資訊:更多資訊
本站發(fā)布的【前端報502 bad gateway的原因及解決方案】?jì)热荩▓D片、視頻和文字)以原創(chuàng )、轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng)
如果涉及侵權請盡快告知,我們將會(huì )在第一時(shí)間立刻刪除涉嫌侵權內容,本站原創(chuàng )內容未經(jīng)允許不得轉載,或轉載時(shí)需注明出處。
Copyright ? 2009-2024 56dr.com. All Rights Reserved. 特網(wǎng)科技 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站