10.6.8 NGX_HTTP_ACCESS_PHASE阶段

NGX_HTTP_ACCESS_PHASE阶段与NGX_HTTP_PREACCESS_PHASE阶段大不相同,这主要体现在它的checker方法是ngx_http_core_access_phase上,这也就致使在NGX_HTTP_ACCESS_PHASE阶段ngx_http_handler_pt处理方法的返回值有了新的意义,见表10-3。

10.6.8 NGX_HTTP_ACCESS_PHASE阶段 - 图1

从表10-3中可以看出,NGX_HTTP_ACCESS_PHASE阶段实际上与nginx.conf配置文件中的satisfy配置项有紧密的联系,所以,任何介入NGX_HTTP_ACCESS_PHASE阶段的HTTP模块,在实现ngx_http_handler_pt方法时都需要注意satisfy的参数,该参数可以由ngx_http_core_loc_conf_t结构体中得到。


typedef struct ngx_http_core_loc_conf_s ngx_http_core_loc_conf_t;

struct ngx_http_core_loc_conf_s{

//仅可以取值为NGX_HTTP_SATISFY_ALL或者NGX_HTTP_SATISFY_ANY

ngx_uint_t satisfy;

……

};


如果不根据所在location中的satisfy参数来决定返回值,那么可能造成未知结果。