Мне было интересно, есть ли способ настроить обратный прокси NGINX для «обхода» сервера в списке, который отвечает 404 (или другими кодами ошибок).
У меня есть кластерная плата изображений, которую я выполняю массовый импорт через 6 выделенных серверов, которые не являются частью кластера, поскольку они не используют общее хранилище. Когда изображения импортируются в действующую систему, другие серверы, которые являются частью кластера, очевидно, ответят 404, поскольку они не могут получить доступ к файлам, которые находятся на серверах импорта.
Есть ли способ добавить их в список на NGINX, и он будет игнорировать серверы, которые отвечают с 404, и использовать те, которые отвечают правильно?
Моя конфигурация NGINX для обратного прокси:
upstream sequenzia-press {
# server node-end1:80;
server node1:80;
server node2:80;
server node3:80;
server node4:80;
}
upstream sequenzia-cpu {
server node1:80;
server node2:80;
server node3:80;
server node4:80;
}
server {
listen 80;
root /var/www/html;
server_name sequenzia.acr.moe;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl;
root /var/www/seq;
server_name sequenzia.acr.moe;
ssl_certificate /etc/apache2/keyset/fullchain.pem;
ssl_certificate_key /etc/apache2/keyset/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
keepalive_timeout 70;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
client_max_body_size 500M;
location / {
add_header TangledFramework-Proxy-Datacenter Nagatenjouki/Core-MD;
add_header TangledFramework-Proxy-Network Nagatenjouki/Production;
add_header TangledFramework-Proxy-Transit Nagatenjouki/Shirai;
add_header TangledFramework-Proxy-Service Sequenzia_Delivery;
proxy_pass http://sequenzia-cpu$request_uri;
}
location /post/import {
add_header TangledFramework-Proxy-Datacenter Orion/Endymion-ATL-1;
add_header TangledFramework-Proxy-Network Orion-Edge-CDN/Primary;
add_header TangledFramework-Proxy-Transit Orion-Edge-A/Shirai-1;
add_header TangledFramework-Proxy-Service Sequenzia_Delivery;
proxy_pass http://<Import RPC>$request_uri;
}
location /data {
add_header TangledFramework-Proxy-Datacenter Orion/Endymion-ATL-1;
add_header TangledFramework-Proxy-Network Orion-Edge-CDN/Primary;
add_header TangledFramework-Proxy-Transit Orion-Edge-A/Shirai-1;
add_header TangledFramework-Proxy-Service Sequenzia_Delivery;
proxy_pass http://sequenzia-press$request_uri;
}
location /se4trp {
root /var/www/err;
expires max;
}
}