如何处理 Nginx 内部请求

Posted

技术标签:

【中文标题】如何处理 Nginx 内部请求【英文标题】:How to handle Nginx internal request or not 【发布时间】:2021-08-08 11:13:10 【问题描述】:

我使用 nginx 作为代理服务器,我只设置了 proxy_intercept_errors on; 和 error_page 指令 error_page 400 /400.html; location = /400.html root /path/to/error;

所以后端服务器tomcat(servlet)有时 sendError 喜欢 HttpServletResponse.sendError(404); ,该请求可能会返回到 nginx 并重定向到 400.html。

在这种情况下,我需要处理内部重定向到 400。

我的问题是我使用一个 lua 脚本来检查所有收入请求中的一些内容,所以我需要告诉我的 lua 在内部请求到来时跳过检查。

是否可以识别内部请求?

【问题讨论】:

也许您正在寻找proxy_intercept_errors 指令? @IvanShatsky 我已经设置好了proxy_intercept_errors on;,所以 nginx 重定向到 400 静态 html 页面,正如我上面所说的,类似于内部请求,我的问题是我需要处理该内部请求。 你没有解释你想如何处理那个请求,如果你想对tomcat 404响应进行一些自定义处理,请使用error_page指令(error_page 404 ...)。 @IvanShatsky 谢谢。现在我对我的问题进行了很多修改并改进了更多信息,你能再检查一下吗 如果我正确理解您的要求,您需要使用ngx.req.is_internal()函数。 【参考方案1】:

下面的ngx.req.is_internal()就是答案。

https://github.com/openresty/lua-nginx-module#ngxreqis_internal

【讨论】:

以上是关于如何处理 Nginx 内部请求的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 是如何处理 HTTP 头部的?

Nginx 如何处理 HTTP 请求?

nginx理解--如何处理一个请求

跟我学Nginx,nginx 如何处理请求?

问题:nginx 如何处理301 ?

Nginx是如何处理Request的?