如何在根文件夹上执行nginx故障切换?

如何在根文件夹上执行nginx故障切换?,nginx,root,nfs,failover,Nginx,Root,Nfs,Failover,My nginx处理来自/www的请求,该请求通过NFS装载 我还有/www2,它也是NFS,但从另一台(备份)服务器装载。它具有与/www相同的文件 如果/www断开,如何使nginx自动将根目录从/www故障切换到/ww2 我尝试设置“root/”,然后设置“try_files/www/ethaniel$uri/www2/ethaniel$uri”,但没有成功 这是我的配置: server { listen 80; server_name .ethaniel.com;

My nginx处理来自/www的请求,该请求通过NFS装载

我还有/www2,它也是NFS,但从另一台(备份)服务器装载。它具有与/www相同的文件

如果/www断开,如何使nginx自动将根目录从/www故障切换到/ww2

我尝试设置“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;
    }
}

这不可能通过nginx config实现,但您可以随时编写脚本

#!/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
确保更改路径以匹配您的环境