Назад | Перейти на главную страницу

NGINX возвращает правильные заголовки с настраиваемыми документами об ошибках

Я настроил 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». Без всяких =, вы получите исходный код ошибки.

Раздражает то, что прямое прочтение (в противном случае) прекрасное руководство (во всяком случае, на момент написания этого ответа) может заставить вас подумать, что все наоборот (= сохраняет исходный код возврата), но локальное тестирование показывает, что он определенно работает так, как я описал выше.