2017-02-28 76 views
0

我的nginx處理來自/www的請求,該請求通過NFS掛載。如何對根文件夾執行nginx故障轉移?

我也有/WWW2這也是NFS但安裝從另一個(備份)服務器。它與/www具有相同的文件。

我怎樣才能讓nginx的自動/WWW故障轉移的根目錄/WWW2如果/WWW壞了?

我試着設置「root /」,然後是「try_files/www/ethaniel $ uri/www2/ethaniel $ uri」,但那不起作用。

這裏是我的配置:

server { 
    listen 80; 
    server_name .ethaniel.com; 
    root /www/ethaniel; 

    location/{ 
     index index.php; 
     autoindex off; 
    } 

    location ~* ^.+\.(php)$ { 
     include /etc/nginx/fastcgi.conf.include; 
    } 
} 

回答

0

它無法通過nginx的配置,但你可以隨時腳本它。

#!/bin/sh 

#check nfs mount status 
df -P -T /storage-pool/nfs-1 | tail -n +2 | awk '{print $2}' | grep nfs | wc -l > /root/status/nfs-1 
df -P -T /storage-pool/nfs-2 | tail -n +2 | awk '{print $2}' | grep nfs | wc -l > /root/status/nfs-2 

#give time to fetch nfs content 
sleep 5 

CHECK_FILE_1=`cat /root/status/nfs-1` 
CHECK_FILE_2=`cat /root/status/nfs-2` 

CHECK_NGINX_1=`grep 'nfs-1' /etc/nginx/sites-enabled/default.conf | wc -l` 
CHECK_NGINX_2=`grep 'nfs-2' /etc/nginx/sites-enabled/default.conf | wc -l` 

if [ $CHECK_FILE_1 -ne 1 ] && [ $CHECK_NGINX_1 -eq 1 ] && [ $CHECK_FILE_2 -eq 1 ] 
    then 
    sed -i 's/nfs-1/nfs-2/g' /etc/nginx/sites-enabled/default.conf 
     nginx -t && echo 'move to nfs-2' 
     nginx -s reload 

elif [ $CHECK_FILE_2 -ne 1 ] && [ $CHECK_NGINX_2 -eq 1 ] && [ $CHECK_FILE_1 -eq 1 ] 
    then 
    sed -i 's/nfs-2/nfs-1/g' /etc/nginx/sites-enabled/default.conf 
     nginx -t && echo 'move to nfs-1' 
     nginx -s reload 

elif [ $CHECK_FILE_1 -ne 1 ] && [ $CHECK_FILE_2 -ne 1 ] 
     then 
     echo 'All nfs-server down' 

else 
    echo 'OK' 

fi 

確保您更改路徑以符合您的環境。