在反向代理配置中处理 nginx 中的错误

isN*_*247 6 nginx web-server

我使用 nginx 作为我现有 Web 服务器的反向代理。我只想管理一组自定义错误页面,最好在 nginx 内管理,因为这是最接近客户端的级别。

现在我可以使用error_pagesproxy_intercept_errors设置。然而:

  1. 在 400(错误请求)错误的情况下,我需要底层 Web 服务器能够通过一些 JSON 正文内容,详细说明请求错误的原因。所以我只需要一种禁用proxy_intercept_errors400 状态代码的方法。

  2. 对于任何状态代码,我不想显示默认的 nginx 错误页面。现在从我所看到的,为了实现这一点,我需要明确列出可以想象的所有可能的状态代码,并为其提供一个错误页面?例如,而不仅仅是通配符 500 以上的所有错误。

我的问题是 - 上述两个问题是否可以在 nginx 本身内解决?如果没有,上述问题是否有明显的解决方案?

isN*_*247 5

我没有正确阅读文档。事实上,通过 400 错误绕过规则很简单,因为没有错误页面指令。

这是来自proxy_intercept_errors文档条目:

如果您将此设置为 on,那么 nginx 将拦截由 error_page 指令显式处理的状态代码。状态代码与 error_page 指令不匹配的响应将从代理服务器按原样发送。 (强调我自己)