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-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参数来决定返回值,那么可能造成未知结果。