Разработка, linux

Nginx: редирект на другую платформу/площадку при 404

nginx_with_two_upstreamКазалось бы: что может быть проще, чем взять два бекенда и одну точку входа.
Когда первый бекенд не отвечает (или отвечает, но 404), то перенаправлять запрос (как можно прозначнее для пользователя) на второй бекенд.
Правильно! 🙂 Проще быть ничего не может.

location / {
    # Отправляем все 404 на @backendB
    error_page 404 = @backendB;
    proxy_intercept_errors on;
    log_not_found  off;
    # Try the proxy like normal
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_pass http://127.0.0.1:8081;
}



location @backendB {
    # Резервный бекенд
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_pass http://127.0.0.1:8082;

    # Настоящую 404ую мы уже получим от этого бекенда.

}