Nginx – location change with 404 error page. Simply. See the code below
upstream backend-main {
server 10.10.10.1:80 max_fails=1 fail_timeout=30s;
server 10.10.10.2:80 max_fails=1 fail_timeout=30s;
}
upstream backend-backup {
server 10.10.10.3:80 max_fails=1 fail_timeout=30s;
server 10.10.10.4:80 max_fails=1 fail_timeout=30s;
}
location /main/ {
proxy_intercept_errors on;
proxy_pass http://backend-main/main/;
include /opt/nginx/proxy_params;
error_page 404 = @fallback;
}
location /second/ {
proxy_intercept_errors on;
proxy_pass http://backend-main/second/;
include /etc/nginx/proxy_params;
error_page 404 = @fallback;
}
location @fallback {
rewrite_log on;
proxy_pass http://backend-backup;
include /etc/nginx/proxy_params;
}
Как мы видим, если при обращении к основному бэкэнду в разных location попадается 404, бэкэнд перенаправляется на запасной backend-backup с помощью созданной переменной @fallback.