Filter过滤器
nginx的filter的工作方式和做鱼有些类似。比如一条鱼,可以把它切成鱼片(也可以切块,切泥),然后通过不同的烹饪方法就得到水煮鱼或者日式生鱼片或者废了等等。同样是一条鱼,加工得到的结果却截然不同,就是因为中间不同的工序赋予了这条鱼各种属性。nginx的filter也是一个道理,前面的Handler好比这条鱼,filter负责加工,最后得到的HTTP响应就会各种各样,格式可以是JSON或者YAML,内容可能多一些或者少一些,HTTP属性可各异,可以选择压缩,甚至内容不见了。
Footer
footer是一个常用的模块,比较简单,是入门学习filter最好的教程。
目标
在HTTP正文末尾添加一段文字,文字由用户定义。
Startup
先贴代码,大家可以有个感性认识。从现在开始,请大家注意nginx源代码的格式要求:
#include <ngx_config.h> #include <ngx_core.h> #include <ngx_http.h>
typedef struct {
} ngx_http_footer_loc_conf_t;
typedef struct {
static char *ngx_http_footer_filter(ngx_conf_t *cf, ngx_command_t *cmd, static void *ngx_http_footer_create_loc_conf(ngx_conf_t *cf); static char *ngx_http_footer_merge_loc_conf(ngx_conf_t *cf, static ngx_int_t ngx_http_footer_filter_init(ngx_conf_t *cf); static ngx_command_t }; static ngx_http_module_t |