我有一个自定义的Nginx模块,该模块在将请求定位到服务器之前设置了一些标头要请求。我还使用auth_request进行身份验证。我的位置部分包含auth_request以及自定义模块指令。我想确保仅在Auth子要求之后设置自定义标头,而不是在子要求中设置。目前,我看到自定义模块被称为首先,并且标题已在sub请求本身中设置。
有两种方法可以在nginx中订购模块。
添加模块处理程序时,将其添加到A phase 。
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。
我不太确定是否可以轻松地重新排序核心模块。