Можно ли изменить код состояния HTTP, возвращаемый, когда шлюз proxy_pass находится в nginx?
Для целей SEO мы хотели бы изменить код состояния HTTP, возвращаемый всякий раз, когда по умолчанию по умолчанию работает сервер nginx.
Мы хотели бы изменить это на "503 Service Unavailable". Также как и заголовок Retry-After, указывающий Google/Bing, что запрос должен быть повторен за X секунд.
Возможно ли это с помощью nginx?
Я не говорю о странице пользовательских ошибок, а о статусе, который был возвращен в заголовке.
Ответы
Ответ 1
Я думаю, вам будет нужно настроить определенную страницу с ошибкой, однако вы можете добиться того, что ищете, если хотите. Попробуйте следующее:
location / {
proxy_pass http://backend;
proxy_intercept_errors on;
error_page 502 503 504 =503 @proxyisdown; # always reply with 503
}
location @proxyisdown {
add_header Retry-After 500;
index my_pretty_error_page.html;
}
Если вы работаете таким образом, вы должны иметь возможность вернуть 503 (что =503
часть директивы error_page
) и повторить попытку после того, как ваши посетители получат красиво отформатированные "oops, у нас в настоящее время возникают проблемы, попробуйте еще раз за несколько минут" страница, а не пустая", а вы не знаете, что это значит.:)
Ответ 2
Назовите страницу с ошибкой /500.html
и:
error_page 400 404 500 502 504 =503 /500.html;
# Optional if your public root is set above and the same for error pages,
# I sometimes please them outside the app, which is why I'm including it.
location /500.html {
root /path/to/public;
}
Должен работать и, кажется, немного проще для меня. Примечание: он также не поддерживает заголовок.