NGiNX 502 Bad Gateway 自動重啟腳本
NGiNX為何會502呢~ 大多都是PHP-FPM死蹺翹了,我在AceLNMP那篇文章中也有講解過該如何調教負載能力,機器配備不錯的,設定參數當然設高一點才能撐的住,但我最近碰到了鬼打牆現象
某台機器的PHP升級到5.3.8之後偶而會掛掉,而且還連NGiNX一起掛,設定檔卻又都沒問題,同樣的設定檔在一堆機器上跑都沒出什麼包,系統也大同小異,挖哩咧!所以只好摸摸鼻子多放一包乖乖了...
好啦~ 總之就弄個自動監測的SHELL吧
vi /root/nginx-502-restart.sh
-
#!/bin/bash
-
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/local/bin:$HOME/bin:$HOME
-
############### 你要修改的地方從這裡開始 ###############
-
# 本機的網址
-
URL=http://520.be/
-
# NGiNX程式的路徑
-
NGiNX=/usr/local/nginx/sbin/nginx
-
############### 你要修改的地方從這裡結束 ###############
-
-
if [ -e /var/lock/subsys/502 ]
-
then
-
killall -9 curl 2>/dev/null
-
killall -9 php-fpm 2>/dev/null
-
service php-fpm start>/dev/null
-
$NGiNX -s reopen
-
else
-
touch /var/lock/subsys/502
-
if [ `curl --connect-timeout 5 -I $URL 2>/dev/null | grep '502 Bad Gateway' -c` != '0' ]
-
then
-
killall -9 php-fpm 2>/dev/null
-
service php-fpm restart>/dev/null
-
$NGiNX -s reopen
-
fi
-
rm -f /var/lock/subsys/502
-
fi
然後把他交給最勤奮滴CRONTAB兄弟去自動每5分鐘檢查一次有沒有出怪手,有的話就重新啟動NGiNX跟PHP-FPM
chmod +x /root/nginx-502-restart.sh
crontab -e
新增以下這行就可以收工啦~ 
*/5 * * * * /root/nginx-502-restart.sh > /dev/null 2>&1

下面是我的範例,有興趣可以參考看看,注意include這個字眼唷!
居然打包好LNMP所需的元件,安裝起來真是方便又快速來著的了,我還寫啥鬼腳本了油幹嗎,真想親他一下啊!!
這位老俄真的是太好心了啦!
簡單的範例如下,我要保護的是 phpmyadmin 資料夾,在 nginx.conf 的設定裡面,我的 root 網頁根目錄已經指定到 /web/www 了,所以再來就直接在 server 的區段加上