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