如何处理 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 内部请求的主要内容,如果未能解决你的问题,请参考以下文章