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ď č. 1Nie 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.