詳解Nginx 502錯(cuò)誤解決辦法
1.配置錯(cuò)誤
因?yàn)閚ginx找不到php-fpm了,所以報(bào)錯(cuò),一般是fastcgi_pass后面的路徑配置錯(cuò)誤了,后面可以是socket或者是ip:port
2.資源耗盡
lnmp架構(gòu)在處理php時(shí),nginx直接調(diào)取后端的php-fpm服務(wù),如果nginx的請(qǐng)求量偏高,我們又沒有給php-fpm配置足夠的子進(jìn)程,那么php-fpm就會(huì)資源耗盡,一旦資源耗盡nginx找不到php-fpm就會(huì)出現(xiàn)502錯(cuò)誤,
解決方案 去調(diào)整php-fpm.conf中的pm.max_children數(shù)值,使其增加,但是也不能無(wú)限增加,畢竟資源有限,一般4G內(nèi)存機(jī)器如果跑php-fpm和nginx,不跑mysql可以設(shè)置為150,8G為300以此類推
3.除了上面的兩種錯(cuò)誤還有其他的原因,很少有,我們可以借助nginx的錯(cuò)誤日志來(lái)進(jìn)行排查vim /usr/local/nginx/logs/nginx_error.log 我們也可以給日志定義級(jí)別vim/usr/local/nginx/conf/nginx.conf 找到error_log,默認(rèn)是crit最嚴(yán)謹(jǐn)?shù)木托校部梢愿某蒬ebug顯示的信息最全面,但是很容易撐爆我們的磁盤。
首先我們需要讓瀏覽器進(jìn)行訪問 修改nginx的配置文件
[root@wqslinux ~]# vim/usr/local/nginx/conf/vhosts/111.confserver{ listen 80; server_name www.111.com; //域名地址 index index.html index.htm index.php; root /data/www/; location ~ /.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/www.sock; //修改sock #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name; }}檢查語(yǔ)法是否正常
[root@wqslinux ~]#/usr/local/nginx/sbin/nginx -t
重新加載配置文件
[root@wqslinux ~]# /usr/local/nginx/sbin/nginx-s reload[root@wqslinux ~]# /etc/init.d/nginx reload
檢查nginx是那個(gè)用戶跑的
[root@wqslinux ~]# ps aux |grep nginx
編輯php-fpm文件 我們要在這個(gè)php-fpm文件里面設(shè)置nginx的用戶主,跟組這樣才不會(huì)顯示502
[root@wqslinux ~]# vim/usr/local/php/etc/php-fpm.conf[global]pid = /usr/local/php/var/run/php-fpm.piderror_log =/usr/local/php/var/log/php-fpm.log[www]listen = /tmp/www.sockuser = php-fpmgroup = php-fpmlisten.owner = nobody //定義屬主listen.group = nobody //定義屬組pm = dynamicpm.max_children = 50pm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 35pm.max_requests = 500rlimit_files = 1024
配置完之后重啟php-fpm
[root@wqslinux ~]# /etc/init.d/php-fpm restart
ps: 再補(bǔ)充一個(gè),是近期很多同學(xué)遇到的問題 這種情況下,使用的是socket,版本高于5.4(含5.4) 默認(rèn)監(jiān)聽的socket文件權(quán)限是所有者只讀,屬組和其他用戶沒有任何權(quán)限。所以,nginx的啟動(dòng)用戶(咱們配置的是nobody)就沒有辦法去讀這個(gè)socket文件,最終導(dǎo)致502,這個(gè)問題可以在nginx的錯(cuò)誤日志中發(fā)現(xiàn)。解決辦法很簡(jiǎn)單,上面給出的配置文件中就有避免這個(gè)問題的配置。
新聞熱點(diǎn)
疑難解答
圖片精選