12、Nginx handler 模块的基本结构

本文深入解析Nginx Handler模块的核心结构,重点介绍其必须提供的请求处理函数ngx_http_handler_pt的原型、参数ngx_http_request_t以及关键返回值NGX_OK、NGX_ERROR和NGX_DECLINE的含义与使用场景,帮助开发者掌握Nginx模块开发中请求处理的核心机制。

handler 模块的基本结构

除了上一节介绍的模块的基本结构以外,handler 模块必须提供一个真正的处理函数,这个函数负责对来自客户端请求的真正处理。这个函数的处理,既可以选择自己直接生成内容,也可以选择拒绝处理,由后续的 handler 去进行处理,或者是选择丢给后续的 filter 进行处理。来看一下这个函数的原型申明。

typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);

r是http 请求。里面包含请求所有的信息,这里不详细说明了,可以参考别的章节的介绍。 该函数处理成功返回 NGX_OK,处理发生错误返回 NGX_ERROR,拒绝处理(留给后续的 handler 进行处理)返回 NGX_DECLINE。 返回 NGX_OK 也就代表给客户端的响应已经生成好了,否则返回 NGX_ERROR 就发生错误了。