我已经设置 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”。没有任何=
,您将获得返回的原始错误代码。
令人恼火的是,直接阅读(除此之外)还不错的手册(无论如何,就像写这个答案时一样)可能会让你认为它是相反的(=
保留原始返回代码),但本地测试表明它肯定按照我上面描述的方式工作。