Tag Archives: module

Nginx模块开发小记

前阵子在折腾Nginx的模块, 很有趣. 为了方便使用调试器, 可以单进程非daemon方式启动, 使用参数: daemon off; master_process  off; 因为Nginx是事件驱动, 在读request body时, 第一个数据包一般发送不全, 需要异步读取余下的. 当在主handler部分调用ngx_http_read_client_request_body时, 需要注册一个回调的handler, 然后主handler直接返回NGX_DONE, 告诉Nginx留下这个请求的事件注册, 继续接收数据包. 经过若干次循环最终读完request body后, Nginx会去回调被注册的handler, 在此函数中产生响应, 最后调用ngx_http_finalize_request结束整个请求. 大概流程是: ngx_http_foo_handler(){     ngx_http_read_client_request_body(r, ngx_http_foo_post_handler);     return NGX_DONE; // 主handler结束 } [...]
Posted in tech | Also tagged , , , | 2 Comments