nginx的502错误及常见解决方法汇总
nginx以其高性能以及對物理計算資源的高密度利用,展示了較apache更為優越的性能,目前很多企業都
更加傾向于使用nginx架構的web服務,但是我們在安裝配置與配置的過程中經常會遇到502的錯誤,那么
引起這些錯誤的原因有哪些,又有著哪些解決方法呢?我們以其來看一下
一、配置文件出錯
我們在搭建LNMP環境的時候,尤其要編譯php和nginx,悉心的人會發現,這里編譯php與LAMP環境中編譯
的php的方式不一樣,并沒有像在apache的基礎上編譯php那樣要在編譯參數中添加與nginx結合的選項,
那么LNMP環境中nginx是怎樣和php結合起來的呢?這就靠著兩種通信方式了,socket(套接字)形式與
ip:port形式。
看一下我們nginx與php的配置文件/usr/local/nginx/conf/nginx.conf與/usr/local/php/etc/php-fpm.conf,其中都有一句話:
fastcgi_pass unix:/tmp/php-cfgi.sock
這就是用來通信的,還有一種形式是:127.0.0.1 : 9000
注意一:這里用兩種形式都可以,但是兩個配置文件中的形式一定要統一,不然絕對502
注意二:如果用套接字形式的話,socket文件的路徑一定要對,不然也還是502
二、沒有權限
nginx中默認監聽的socket文件權限是所有者只讀,屬組和其他用戶沒有任何權限。所以,nginx的啟動
用戶(咱們配置的是nobody)就沒有辦法去讀這個socket文件,最終導致502
解決辦法:在配置文件/usr/local/php/etc/php-fpm.conf中加入
listen.owner = nobody? ? //定義nginx的所屬主
listen.group = nobody? ? //定義nginx的所屬組這兩個配置就是定義socket的屬主和屬組是誰。
還有另一種辦法:
listen.mode = 0666?
注:這兩種方法用一種就可以了,沒有必要兩種都用
三、資源耗盡
nmp架構在處理php時,nginx直接調取后端的php-fpm服務,如果nginx的請求量偏高,我們又沒有給php-
fpm配置足夠的子進程,那么php-fpm就會資源耗盡,一旦資源耗盡nginx找不到php-fpm就會出現502
解決方案:
去調整php-fpm.conf中的pm.max_children數值,使其增加,但是也不能無限增加,畢竟資源有限,一般
4G內存機器如果跑php-fpm和nginx,不跑mysql可以設置為150,8G為300以此類推
四、其它
如果遇到其它的較為少見的錯誤,我們可以修改nginx的錯誤日志(/usr/local/nginx/logs/nginx_error.log)的級別,使其記錄最多的日志內容,這樣方便我們排查錯誤
修改方法:在配置文件/usr/local/nginx/conf/nginx.conf中將 crit 改為 debug
轉載于:https://blog.51cto.com/raffaelexr/1726433
總結
以上是生活随笔為你收集整理的nginx的502错误及常见解决方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构六——堆的应用
- 下一篇: Spock Primer 翻译