[教學] Nginx 502 Bad Gateway 解決方式

502_bad_gateway-dd-tank1

這篇提供幾個處理 Nginx 502 Bad Gateway 的解決方法。我的使用情境,是在升級使用 SSL 去產出 https 開頭的安全網頁之後,開啟頁面時會不定時出現這個的錯誤。主機環境是 LEMP (Linux + Nginx + MySQL + PHP) 。因為 SSL 會耗費較多主機資源,所以如果你也使用了 SSL ,請先參考這一篇 [教學] SSL 安裝與架設 NGINX CENTOS 7.0 進行基本的效能調教。當調教之後仍舊無法解決,再試試看以下方式。

[wc_highlight color=”green”] 調整 php-fpm 處理效率 [/wc_highlight]

[wc_code]fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;[/wc_code]

[wc_highlight color=”green”] 如果是 Ajax Call 有發生這個現象 [/wc_highlight]

請調整發送端與接收端的 GET|POST method 具備一致性。根據實際測試,發送 ajax call 使用 POST 的時候,但是 api 接收端卻用類似以下邏輯處理的話:

[wc_code]$request = $_GET[‘var’] ? $_GET[‘var’] : $_POST[‘var’]; [/wc_code]

就會發生 502 Bad Gateway 錯誤喔!

[wc_highlight color=”green”]改變 php-fpm listen port  [/wc_highlight]

修改 php-fpm 設定檔

[wc_code]sudo vim /etc/php-fpm.d/www.conf[/wc_code]

將 listen port 從 php-fpm.sock 改成

[wc_code]listen = 127.0.0.1:9000[/wc_code]

這個方法對我的環境來說是沒有效的,但或許你可以嘗試看看

 

The main picture of this post credited from http://efrenbautista.com/2015/08/25/nginx-502-gateway-timeout-on-php-fpm/

 

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *