我已经设置NGINX为我的代理服务器返回自定义错误文档,它显示正确的文件,但总是返回一个200 OK头。
相关的NGINXconfiguration是
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/; } }
你可以testing这个如果你想要的, 这个页面应该返回一个404错误,它返回正确的文档,但将状态代码更改为'200 OK'( 这里testingHTTP标题),如果我用internal;replaceroot /var/rmg/ 正确的标题返回,但是我的自定义错误页面不起作用。
我如何让NGINX返回我的自定义错误文档与正确的状态头?
我在RHEL 6.1上运行NGINX 1.0.4
删除error_page指令中的= ; 你可以使用=NNN (例如=401 )来指定你喜欢的任何返回代码,但是如果你给出一个bare =它意味着“使用error handling程序的错误代码”,对于一个静态文件来说它总是“200 OK”。 没有任何= ,你会得到返回的原始错误代码。
令人烦恼的是,直接阅读(否则)精细的手册 (正如在写这个答案的时候,无论如何)可能会让你认为它是相反的( =保留原始的返回码),但是本地testing表明它肯定按照我上面描述的方式工作。