我有一个自定义的nginx模块,该模块设置一些请求头,然后再将请求代理到服务器。我还使用auth_request进行身份验证。我的位置部分包含auth_request以及自定义模块指令。我想确保仅在auth子请求之后而不在子请求中设置自定义标头。目前,我看到自定义模块首先被调用,并且标头是在子请求本身中设置的。
答案 0 :(得分:0)
有两种方法可以在nginx中订购模块。
添加模块处理程序时,它会添加到阶段。
"dd/MM/yyyy HH:mm:ss:SSS"
在此示例中,我们看到模块已添加到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
在这种情况下,模块A首先运行,然后运行B,最后运行C。
我不太确定核心模块是否可以轻松地重新订购。