Nginx: редирект на другую платформу/площадку при 404
Казалось бы: что может быть проще, чем взять два бекенда и одну точку входа.
Когда первый бекенд не отвечает (или отвечает, но 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ую мы уже получим от этого бекенда.
}
Категории: Разработка