/ / Ako urobiť nginx failover v koreňovom priečinku? - nginx, root, nfs, failover

Ako urobiť nginx failover v koreňovom priečinku? - nginx, root, nfs, failover

Môj nginx spracováva požiadavky od / www ktorý je pripojený cez NFS.

tiež mám / www2 ktorý je tiež NFS, ale je pripojený z iného (záložného) servera. Má rovnaké súbory ako / www.

Ako môžem dosiahnuť, aby nginx automaticky prepol po zlyhaní koreňový adresár / www na / www2 ak / www je zlomené?

Skúsil som nastaviť „root /“ a potom „try_files / www / ethaniel $ uri / www2 / ethaniel $ uri“, ale to nefungovalo.

Tu je môj config:

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

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

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

odpovede:

0 pre odpoveď č. 1

Nie je to možné prostredníctvom konfigurácie nginx, ale vždy si to môžete napísať.

#!/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

Uistite sa, že ste zmenili cesty tak, aby zodpovedali vášmu prostrediu.