一般而言 handler 返回:
-
NGX_OK : 表示该阶段已经处理完成,需要转入下一个阶段
-
NG_DECLINED : 表示需要转入本阶段的下一个handler继续处理
-
NGX_AGAIN, NGX_DONE : 表示需要等待某个事件发生才能继续处理(比如等待网络IO),此时Nginx为了不阻塞其他请求的处理,必须中断当前请求的执行链,等待事件发生之后继续执行该handler
-
NGX_ERROR:表示发生了错误,需要结束该请求。
checker 函数根据 handler 函数的不同返回值,给上一层的 ngx_http_core_run_phases 函数返回 NGX_AGAIN 或者 NGX_OK,如果期望上一层继续执行后面的 phase 则需要确保 checker 函数不是返回 NGX_OK,不同 checker 函数对 handler 函数的返回值处理还不太一样,开发模块时需要确保相应阶段的 checker 函数对返回值的处理在你的预期之内。