我有一个自定义 nginx 模块,它在将请求代理到服务器之前设置一些请求头。我还使用 auth_request 进行身份验证。我的位置部分包含 auth_request 以及自定义模块指令。我想确保仅在 auth 子请求之后而不是在子请求中设置自定义标头。目前,我看到首先调用了自定义模块,并且在子请求本身中设置了标头。
问问题
150 次
1 回答
0
有两种方法可以在 nginx 中对模块进行排序。
添加模块处理程序时,它被添加到阶段。
ngx_http_handler_pt *h = ngx_array_push(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers);
if(h == NULL)
{
return NGX_ERROR;
}
*h = ngx_dcs_handler;
在这个例子中,我们看到模块被添加到NGX_HTTP_CONTENT_PHASE
. 我认为这些auth_request
会在不同的早期阶段添加?
唯一的其他方法是以正确的顺序重新编译。第一个运行的模块是configure
命令行上的最后一个。
configure ... --add-module=C --add-module=B --add-module=A
在这种情况下,模块 A 先运行,然后是 B,最后是 C。
我不太确定核心模块是否可以轻松重新排序。
于 2019-03-27T07:24:26.847 回答