常見的Nginx 502 Bad Gateway解決辦法如下:
Nginx 502錯(cuò)誤情況1:
網(wǎng)站的訪問量大,而php-cgi的進(jìn)程數(shù)偏少。
針對(duì)這種情況的502錯(cuò)誤,只需增加php-cgi的進(jìn)程數(shù)。具體就是修改/usr/local/php/etc/php-fpm.conf 文件,將其中的max_children值適當(dāng)增加。這個(gè)數(shù)據(jù)要依據(jù)你的VPS或獨(dú)立服務(wù)器的配置進(jìn)行設(shè)置。一般一個(gè)php-cgi進(jìn)程占20M內(nèi)存,你可以自己計(jì)算下,適量增多。
/usr/local/php/sbin/php-fpm restart 然后重啟一下.
Nginx 502錯(cuò)誤情況2:
CPU占用率、內(nèi)存占用率非常高,遭到CC攻擊.
解決方法請(qǐng)參考:LinuxVPS簡單解決CC攻擊
Nginx 502錯(cuò)誤情況3:
CPU占用率不高,內(nèi)存溢出。
檢查一下網(wǎng)站程序有沒有問題?一般小偷站點(diǎn)常常會(huì)出現(xiàn)內(nèi)存溢出。
檢查一下/var/log/目錄下的日志,看看是不是有人爆破SSH和FTP端口?
SSH、FTP遭到窮舉也會(huì)占用大量內(nèi)存。是的話改掉SSH端口和FTP端口即可
將網(wǎng)上找到的一些和502 Bad Gateway錯(cuò)誤有關(guān)的問題和排查方法列一下,先從FastCGI配置入手:
1.查看FastCGI進(jìn)程是否已經(jīng)啟動(dòng)
NGINX 502錯(cuò)誤的含義是sock、端口沒被監(jiān)聽造成的。我們先檢查fastcgi是否在運(yùn)行
2.檢查系統(tǒng)Fastcgi進(jìn)程運(yùn)行情況
除了第一種情況,fastcgi進(jìn)程數(shù)不夠用、php執(zhí)行時(shí)間長、或者是php-cgi進(jìn)程死掉也可能造成nginx的502錯(cuò)誤
運(yùn)行以下命令判斷是否接近FastCGI進(jìn)程,如果fastcgi進(jìn)程數(shù)接近配置文件中設(shè)置的數(shù)值,表明worker進(jìn)程數(shù)設(shè)置太少
netstat -anpo | grep "php-cgi" | wc -l
3.FastCGI執(zhí)行時(shí)間過長
根據(jù)實(shí)際情況調(diào)高以下參數(shù)值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
4.頭部太大
nginx和apache一樣,有前端緩沖限制,可以調(diào)整緩沖參數(shù)
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
如果你使用的是nginx的負(fù)載均衡Proxying,調(diào)整
proxy_buffer_size 16k;
proxy_buffers 4 16k;
5.https轉(zhuǎn)發(fā)配置錯(cuò)誤
正確的配置方法
server_name www.jb51.net; 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;
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。