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.