/ / Как да направя отмяна на nginx в root папка? - nginx, root, nfs, failover

Как да направя nwinx failover в root папката? nginx, root, nfs, failover

Моят nginx обработва заявки от / WWW който се монтира чрез NFS.

имам също / 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 за отговор № 1

Не е възможно чрез 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

Уверете се, че промените пътищата, за да съответстват на вашата среда.