? ?一、502 bad gateway nginx什么意思?
? ? 通俗的來講,502 bad gateway代表您所訪問的網(wǎng)站出了問題,因為502 Bad Gateway 服務器作為網(wǎng)關或者代理時,是為了完成訪問下一個服務器,但該服務器返回了非法的應答。也許是暫時的,也許是的。建議大家稍等一下再從新訪問試試。?
? ? 二、502 bad gateway產(chǎn)生原因?
? ? 502 bad gateway產(chǎn)生的大多數(shù)原因都是由于連接超時,我們向服務器發(fā)送請求,由于服務器當前的鏈接數(shù)太多,導致服務器無法給于正常的響應,才會產(chǎn)生502 bad gateway報錯。
? ? 一般來說,服務器只是作為網(wǎng)關或代理,以滿足客戶的要求(如Web瀏覽器)來訪問我們所請求的URL。服務器收到無效的響應從上游服務器訪問請行它的要求。這并不意味著上游服務器已關閉(無響應網(wǎng)關/代理),而是上游服務器和網(wǎng)關/代理不同意協(xié)議交換數(shù)據(jù)。由于互聯(lián)網(wǎng)協(xié)議是固定的,所以,這意味著一個或兩個機器已經(jīng)不正確或沒有完全編程。
? ? 三、固定502錯誤產(chǎn)生原因?
? ? 一般這個問題是由于不良的IP之間的溝通后端計算機,可能包括在Web服務器上的網(wǎng)站您嘗試訪問。在分析這個問題,您應該清除瀏覽器緩存再訪問。
? ? 如果您上網(wǎng)時在您嘗試訪問的所有網(wǎng)站上都看這個問題,有兩種可能
? ? ①你的ISP重大設備故障/過載
? ? ②有問題的內部互聯(lián)網(wǎng)連接如您的防火墻無法正常運作。
? ? 在種情況下,只有您的ISP可以幫助您。在第二種情況下,你需要解決什么,那是阻止你進入互聯(lián)網(wǎng)。?
? ? 如果您只有在部分嘗試訪問的網(wǎng)站中出現(xiàn)此問題,那很可能是一個問題,即這些網(wǎng)站之一,其設備故障或超載。聯(lián)系你網(wǎng)站的管理員。
? ? 四、502 bad gateway解救方法?
? ? 1、刷新
? ? 說白了很簡單是——刷新(不是一般的刷新哦)
? ? 這里所講的刷新主要是指從服務器下載數(shù)據(jù)到本地的硬盤瀏覽器,再從本地硬盤中讀取數(shù)據(jù)到瀏覽器顯示給我們看。通常有兩種刷新模式:
? ? ①基本刷新:是點擊刷新或者使用F5快捷鍵
? ? 基本刷新只是從本地的硬盤重新拿取數(shù)據(jù)到瀏覽器,并不重新向服務器發(fā)出請求。大部分用戶很多時候都是這樣刷新的,遇到502報錯的沒有任何效果。
? ? ②從服務器刷新:如果你重新直接點擊你想要瀏覽的網(wǎng)頁鏈接,你會發(fā)現(xiàn)剛剛還顯示的”502 bad gateway”錯誤信息頁面,重新點擊鏈接后又可以正常瀏覽。
? ? 解決方法:是從服務器上刷新:快捷鍵 ctrl+F5,這樣是重新向服務器發(fā)送請求了,如果服務器能正常給予你響應你可以看到頁面了。
? ? 2、DNS 緩沖問題
? ? 這種情況主要是你訪問了國外一些被國家防火墻屏蔽的網(wǎng)站如YouTube,facebook之類。
? ? 解決辦法:這種情況通常在幾分鐘之內可以訪問了。也可以嘗試 在cmd窗口運行 ipconfig /flushdns 來刷新DNS緩存
? ? 3、dns 被劫持
? ? 解決辦法:更換DNS,推薦114.114.114.114,還有阿里的公共DNS 如:223.5.5.5、223.6.6.6
?
? ? 五、nginx 502 bad gateway錯誤
? ? 有時候由于網(wǎng)站流量過大或者其它原因,導致php-cgi直接down掉,所以我們得看php-cgi是否在運行。執(zhí)行以下命令:
????ps?-A?|?grep?php5-cgi
? ? 若沒有運行,我們可以手動啟動
????/etc/init.d/php_cgi?start
? ? 如果你發(fā)現(xiàn)php-cgi不明原因有時候down掉,可以使用下面的腳本臨時解決這個問題,添加到cronjob。
????if?ps?aux?|?grep?‘php5-cgi’?|?grep?-v?grep?>?/dev/null?;?then?echo?"PHP-cgi?is?runnning?!"?else?echo?"PHP-cgi?is?down.?Starting?over…"?/etc/init.d/php-fcgi?start?fi
? ? ②fastcgi進程數(shù)不夠用、php執(zhí)行時間長的原因
? ? fastcgi進程數(shù)可以修改php-fpm.conf中的max_children的數(shù)值,高峰時php-cgi耗掉的內存為20M,請根據(jù)自己的內存情況計算了。
? ? 限制php執(zhí)行時間可以在php-fpm.conf中的request_terminate_timeout設置,這是為了防止php程序的bug導致php-cgi假死。
? ? ③FastCGI執(zhí)行時間過長
? ? 根據(jù)實際情況調高以下參數(shù)值
????fastcgi_connect_timeout?300;?fastcgi_send_timeout?300;?fastcgi_read_timeout?300;
? ? 六、解決nginx出現(xiàn)502的錯誤
? ? ①查看當前的PHP FastCGI進程數(shù)是否夠用
????netstat?-anpo?|?grep?"php-cgi"?|?wc?-l
? ? 如果實際使用的”FastCGI進程數(shù)”接近預設的”FastCGI進程數(shù)”,那么,說明”FastCGI進程數(shù)”不夠用,需要增大。
? ? ②部分PHP程序的執(zhí)行時間超過了Nginx的等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間
? ? 例如,系統(tǒng)當前的PHP FastCGI進程數(shù)明顯超過了預設值的64這個數(shù)值,在電信的服務器上查看當前的PHP FastCGI進程數(shù)沒有高于64這個數(shù)值,而且網(wǎng)通線路的活動連接明顯高于電信的活動連接,由此可以說明出現(xiàn)nginx不穩(wěn)定的情況是由于服務器訪問負載過大引起的。
? ? 總結:php-cgi進程數(shù)不夠用、php執(zhí)行時間長、或者是php-cgi進程死掉,都會出現(xiàn)502錯誤。
更多Nginx相關技術文章,請訪問Nginx使用教程欄目進行學習!