Я настроил NGINX для возврата настраиваемых документов об ошибках для моего прокси-сервера, он показывает правильный файл, но всегда возвращает 200 OK
заголовок.
Соответствующая конфигурация NGINX:
server {
listen 94.23.155.32:80;
server_name rmg.io www.rmg.io;
proxy_intercept_errors on;
location / {
proxy_pass http://rmgshort/;
}
error_page 404 = /error/404.html;
error_page 500 501 502 503 503 = /error/500.html;
location /error/ {
root /var/rmg/;
}
}
Вы можете проверить это, если хотите, эта страница должен возвращать ошибку 404, он возвращает правильный документ, но меняет код состояния на «200 OK» (тестовые заголовки HTTP Вот), если я заменю root /var/rmg/
с участием internal;
возвращается правильный заголовок, но тогда моя настраиваемая страница ошибок не работает.
Как заставить NGINX возвращать мой пользовательский документ об ошибке с правильным заголовком статуса?
Я использую NGINX 1.0.4 на RHEL 6.1
Отбросьте =
вне error_page
директива; вы можете указать любой код возврата с помощью =NNN
(например =401
), но если дать голый =
это означает «использовать код ошибки обработчика ошибок», который для статического файла всегда будет «200 OK». Без всяких =
, вы получите исходный код ошибки.
Раздражает то, что прямое прочтение (в противном случае) прекрасное руководство (во всяком случае, на момент написания этого ответа) может заставить вас подумать, что все наоборот (=
сохраняет исходный код возврата), но локальное тестирование показывает, что он определенно работает так, как я описал выше.