Viole 2012-10-28 10:29
502 Bad Gateway
Nginx 502 Bad Gateway錯誤的終極解決方案 徹底解決lnmp出現的502錯誤
-
Nginx 502 Bad Gateway錯誤的終極解決方案:
隨心微博 之前服務器是手工安裝的,未發生過任何問題,後來使用Lnmp一鍵安裝包部署Nginx環境,卻發現經常出現 502 Bad Gateway 錯誤,比如在不停的刷新過程中,時不時就出現一次502錯誤;
經過本人摸索,終於發現了一個解決方法:
lnmp安裝後,Fastcgi 默認的監聽端口是這樣的:fastcgi_pass unix:/tmp/php-cgi.sock;
而隨心微博之前沒發生502錯誤的配置文件是:fastcgi_pass 127.0.0.1:9000;
換成監聽9000端口後,再次狂刷新頁面,沒有出現;找一個外地朋友測試一下:刷新50+,沒有出現502。而之前我是基本上刷新了八九次就會出現一次502錯誤;
所以,確定應該就是fastcgi監聽端口的問題引起的;
具體步驟:
1.修改nginx.conf
nginx安裝目錄:/usr/local/nginx/conf/ ,打開nginx.conf,查找到:
fastcgi_pass unix:/tmp/php-cgi.sock;
改爲:
fastcgi_pass 127.0.0.1:9000;
2.修改php-fpm.conf
php安裝目錄:,/usr/local/php/etc/,打開php-fpm.conf
查找到第26行:
<value name="listen_address">/tmp/php-cgi.sock</value>
改爲
<value name="listen_address">127.0.0.1:9000</value>
3.依次重啓Nginx和php-fpm
nginx 重啓:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
php-fpm重啓:
/usr/local/php/sbin/php-fpm restart
okay,完成操作,現在試試是否還存在502錯誤了吧,如果還存在,可能就是fastcgi進程數不夠,可適當根據自身服務器內存需要,修改cgi進程數目,在php-fpm.conf修改max_children最大數目,如我的服務器2G內存,修改爲 <value name="max_children">72</value>。
可能還會修改:
<value name="request_terminate_timeout">9999s</value>
<value name="request_slowlog_timeout">999s</value>