1. 程式人生 > >nginx 502 Bad Gateway 錯誤問題收集

nginx 502 Bad Gateway 錯誤問題收集

Nginx php-fpm fast-cgi 502 Bad Gateway錯誤是FastCGI有問題,造成NGINX 502錯誤的可能性比較多。
將網上找到的一些和502 Bad Gateway錯誤有關的問題和排查方法列一下,先從FastCGI配置入手:

1.FastCGI程序是否已經啟動

2.FastCGI worker程序數是否不夠
通過命令檢視伺服器上一共開了多少的 php-cgi 程序
      ps -fe |grep "php" | grep -v "grep" | wc -l
使用如下命令檢視已經有多少個php-cgi程序用來處理tcp請求
     netstat -anop | grep "php" | grep -v "grep" | wc -l
接近配置檔案中設定的數值,表明worker程序數設定太少
參見:http://blog.s135.com/post/361.htm

3.FastCGI執行時間過長
根據實際情況調高以下引數值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

4.FastCGI Buffer不夠
nginx和apache一樣,有前端緩衝限制,可以調整緩衝引數
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
參見:http://www.hiadmin.com/nginx-502-gateway-error一例/

5.Proxy Buffer不夠
如果你用了Proxying,調整
proxy_buffer_size 16k;
proxy_buffers      4 16k;
參見:http://www.ruby-forum.com/topic/169040

6.https轉發配置錯誤
正確的配置方法

10.nginx.conf的rewrite-url規則等

11.php-fpm.pid
鄙人在/php/sbin/php-fpm 裡面把
php_fpm_PID=/data1/php/logs/php-fpm.pid修改成
#php_fpm_PID=/data1/php/logs/php-fpm.pid
故猜想是使用者許可權的問題已php-fpm.conf裡的使用者啟動該服務估計問題會消失

另外nginx 400 bad request 錯誤的原因和解決辦法
在nginx.conf中,將client_header_buffer_size和large_client_header_buffers都調大,可緩解此問題。
其中主要配置是client_header_buffer_size這一項,預設是1k,所以header小於1k的話是不會出現問題的。
按我現在配置是:
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
這個配置可接收16k以下的header,在瀏覽器中cookie的位元組數上限會非常大,所以實在是不好去使用那最大值。