NGINX 502 Bad Gateway錯誤是FastCGI有問題,形成NGINX 502錯誤的可能性比較多。將網上找到的一些和502 Bad Gateway錯誤有關的問題和排查方法列一下,先從FastCGI配置入手:php
1.查看FastCGI進程是否已經啓動
NGINX 502錯誤的含義是sock、端口沒被監聽形成的。咱們先檢查fastcgi是否在運行前端
2.檢查系統Fastcgi進程運行狀況
除了第一種狀況,fastcgi進程數不夠用、php執行時間長、或者是php-cgi進程死掉也可能形成nginx的502錯誤
運行如下命令判斷是否接近FastCGI進程,若是fastcgi進程數接近配置文件中設置的數值,代表worker進程數設置太少
netstat -anpo | grep "php-cgi" | wc -lmysql
3.FastCGI執行時間過長
根據實際狀況調高如下參數值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;nginx
4.頭部太大
nginx和apache同樣,有前端緩衝限制,能夠調整緩衝參數
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
若是你使用的是nginx的負載均衡Proxying,調整
proxy_buffer_size 16k;
proxy_buffers 4 16k;
參見:http://www.ruby-forum.com/topic/169040sql
5.https轉發配置錯誤
正確的配置方法
server_name www.mydomain.com;
location /myproj/repos {
set $fixed_destination $http_destination;
if ( $http_destination ~* ^https(.*)$ )
{
set $fixed_destination http$1;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Destination $fixed_destination;
proxy_pass http://subversion_hosts;
}apache
6.在php.ini裏,eaccelerator配置項必定要放在Zend Optimizer配置以前,不然也可能引發502 Bad Gateway後端
7.在安裝好使用過程當中出現502問題,通常是由於默認php-cgi進程是5個,可能由於phpcgi進程不夠用而形成502,須要修改php-fpm.conf 將其中的max_children值適當增長。ruby
8.php執行超時,修改/usr/local/php/etc/php.ini 將max_execution_time 改成300負載均衡
9.磁盤空間不足,如mysql日誌佔用大量空間dom
10.php-fpm中的超時時間設置不合理 request_terminate_timeout
固然,還要看你後端用的是哪一種類型的FastCGI,我用過的有php-fpm,流量約爲單臺機器40萬PV(動態頁面), 如今基本上沒有碰到502。