LNMP一鍵安裝包的Nginx 502 Bad Gateway錯誤可能原因及解決方法
成都創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為霍州企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、做網(wǎng)站,霍州網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。第一種原因:安裝lnmp一鍵安裝包時php沒安裝成功而出現(xiàn)502 Bad Gateway,從0.9開始只要安裝成功或失敗都就會有提示。沒安裝成功一般原因是在安裝php前,腳本中某些lib包可能沒有安裝上,造成php沒有編譯安裝成功。可以看一下是否存在/usr/local/php/sbin/php-fpm ,如果沒有肯定沒安裝成功(排除)
解決方法:
可以嘗試根據(jù)lnmp一鍵安裝包中的腳本手動安裝一下,看看是什么錯誤導(dǎo)致的,在網(wǎng)上搜索一下,或者把錯誤信息發(fā)上來。如果實在不會提供按http://lnmp.org/install.html這個安裝時的lnmp.log日志文件(可以用winscp登陸下載lnmp.log,壓縮并上傳到本論壇),沒有錯誤信息我們沒法說什么原因。本方法只限于lnmp沒安裝成功,只要lnmp安裝成功了這一項就沒可能。
第二種原因:
在php.ini里,eaccelerator配置項一定要放在Zend Optimizer配置之前,否則也可能引起502 Bad Gateway。php一些模塊之間也可能會造成502,如Zend GuardLoader與Opcache,ioncube與Zend GuardLoader等,一般可以通過注釋掉一個然后重啟php-fpm,然后看是否還502進行排除。(排除)
第三種原因:
在安裝好使用過程中出現(xiàn)502問題,一般是因為默認(rèn)php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當(dāng)增加,如果php已升級到5.3.*以上且使用的是dynamic模式,需要調(diào)整pm.min_spare_servers和pm.max_spare_servers的值適當(dāng)增加。值可以按內(nèi)存xxMB/2/20 的整數(shù)來算(內(nèi)存以MB為單位進行計算,/ 為除,取整數(shù)),最小值可以按內(nèi)存/2/40 的整數(shù)來算,可以少點或多大,可以自己調(diào)整運行看看,同時pm.max_children也調(diào)整為和pm.max_spare_servers的值一樣。
也有可能是max_requests值不夠用。
(4G內(nèi)存,我改為:
pm.max_children = 100
pm.start_servers = 90
pm.min_spare_servers = 50
pm.max_spare_servers = 100
request_terminate_timeout = 100)(pm.start_servers是取pm.min_spare_servers和pm.max_spare_servers的中間值,或者值,否則出錯)
第四種原因:
php執(zhí)行超時,修改/usr/local/php/etc/php.ini 將max_execution_time 改為300 或直接改成0 不限制,同時還需要修改/usr/local/php/etc/php-fpm.conf 調(diào)整request_terminate_timeout的值
再/etc/init.d/php-fpm restart重啟使其生效。(前者300,后者100,暫未知)
第五種原因:
磁盤空間不足,如mysql日志占用大量空間清理一下磁盤上的文件,有部分剩余空間,重啟即可恢復(fù)。(排除)
第六種原因:
查看php-cgi或php-fpm進程是否在運行
第七種原因:
將nginx.conf里的
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout都調(diào)大一點。
第八種可能原因:https://bbs.vpser.net/thread-1654-1-1.html
九、不要按網(wǎng)上找到的教程隨便修改配置,網(wǎng)上找到的可能會路徑不一樣,也可能會導(dǎo)致502或有相關(guān)的錯誤產(chǎn)生,例如網(wǎng)上其他的教程可以使用的是9000端口,而lnmp默認(rèn)使用socket,你如果按網(wǎng)上的教程設(shè)置的端口或socket路徑不一樣那肯定100% 502無疑。
LNMP默認(rèn)使用unix套接字,虛擬主機配置文件里 fastcgi_pass參數(shù)為unix:/tmp/php-cgi.sock; 需要確保/usr/local/php/etc/php-fpm.cnf 里的設(shè)置,php 5.2為<value name=“listen_address”>/tmp/php-cgi.sock</value> php 5.3及以上版本為listen = /tmp/php-cgi.sock ,同時/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虛擬主機配置里的fastcgi_passunix:/tmp/php-cgi.sock; 不一致就必定502。
有時候unix套接字模式下可能會502,可以嘗試改成tcp/ip的方式 php 5.2下<value name=“listen_address”>/tmp/php-cgi.sock</value>替換為<value name=“listen_address”>127.0.0.1:9000</value>php 5.3及以上版本listen = /tmp/php-cgi.sock替換為listen = 127.0.0.1:9000,nginx配置文件及虛擬主機配置文件里fastcgi_passunix:/tmp/php-cgi.sock;替換為fastcgi_pass127.0.0.1:9000;之后重啟試試。
十、如果虛擬主機的日志文件過大也可能會造成502問題。
建議定期清空一下虛擬主機的日志文件。
十一、有些程序或者程序的主題有死循環(huán)或其他非常占用資源的代碼也可能會引起502,可以嘗試暫時注釋掉可能的主機的配置文件,重啟看看是否還會502。
十二、如果以上方法都試過,但還有時會出現(xiàn)502錯,可以嘗試添加502自動重啟腳本
十三、實在找不到原因可以開啟slowlog看看慢日志是否有相關(guān)有用的信息
十四、升級PHP后出現(xiàn)502,可能php沒升級成功。
如果是1.0之前的版本升級PHP到5.4或5.5后,可能是因為這個原因
網(wǎng)站標(biāo)題:502錯誤筆記(php-5.4.45版本)
文章分享:http://www.rwnh.cn/article22/cjopcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、服務(wù)器托管、網(wǎng)站收錄、定制開發(fā)、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)