NGINX 使用自定义错误文档返回正确的标头

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 返回具有正确状态标头的自定义错误文档?

我在 RHEL 6.1 上运行 NGINX 1.0.4

答案1

将 删除=到指令之外error_page;您可以使用 指定任何您喜欢的返回代码=NNN(例如=401),但如果您只给出 ,则=意味着“使用错误处理程序的错误代码”,对于静态文件,该代码将始终为“200 OK”。没有任何=,您将获得返回的原始错误代码。

令人恼火的是,直接阅读(除此之外)还不错的手册(无论如何,就像写这个答案时一样)可能会让你认为它是相反的(=保留原始返回代码),但本地测试表明它肯定按照我上面描述的方式工作。

相关内容