简单的HTTP过滤模块
2013-08-21 18:36
239 查看
简单的HTTP过滤模块
一、Nginx的HTTP过滤模块特征
一个请求可以被任意个HTTP模块处理;在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或调用ngx_http_output_filter()发送HTTP包体时,才会由这两个方法一次调用所有的HTTP过滤模块来处理这个请求。HTTP过滤模块仅处理服务器发送到客户端的响应,而不处理客户端发往服务器的HTTP请求。
多个过滤模块的顺序的形成以及Nginx自带的过滤模块请参考原书。
二、编写一个HTTP过滤模块
以向返回给用户的文本格式响应包体前加一段字符串"[my filter prefix]"为例,展示如何编写一个HTTP过滤模块。源代码来自于《深入理解Nginx》。1.config文件的编写
与前几篇博文的HTTP模块不同,HTTP过滤模块需要HTTP_FILTER_MODULES一项以把所有过滤模块一同编译,因此config写作:ngx_http_myfilter_create_conf()
ngx_http_myfilter_merge_conf
ngx_http_mytest_commands[]
ngx_http_myfilter_module_ctx
ngx_http_myfilter_module
ngx_int_t ngx_http_myfilter_init()
ngx_http_myfilter_header_filter()
ngx_http_myfilter_body_filter()
三、过滤模块测试
根据原作者编写的nginx.confserver { listen 8080; location / { root /; add_prefix on; } }
可以看出,需要在/目录下(系统根目录)添加一个或多个任意内容的文本文件来进行测试。我写了一个内容为test的文本文件test.txt,并放在。
输入curl http://localhost:8080/test.txt,可以看到返回的内容是[my filter prefix]test。
当然,如果你放在/的不是纯文本文件,而是html文件或者其他类型文件,是不会增加这个前缀的。
另外,把on改成off,你会发现前缀不再出现,说明过滤模块功能已经关闭。
p.s.此书的后续章节是源码分析,实践环节比较少,“《深入理解Nginx》阅读与实践”系列可能到此为止。
相关文章推荐
- 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块
- 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块
- 简单的http过滤模块
- Nginx开发一个简单的HTTP过滤模块
- Nginx开发一个简单的HTTP过滤模块
- 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块
- Nginx模块开发(5)————开发简单的HTTP过滤模块
- Nginx源码分析与实践---(一)编写一个简单的Http模块
- Nginx之一:实现简单HTTP模块helloworld
- nginx 开发简单的http模块
- Nginx之一:实现简单HTTP模块helloworld
- 【转】使用Python中HTTPParser模块进行简单的html解析
- Nginx HttpSubModule sub_filter模块的过滤功能
- Nginx基础. HTTP过滤模块添加方式探讨
- Nginx之一:实现简单HTTP模块helloworld
- 第1章-安装Node.js及相关要点-1.7.使用Node.js的HTTP模块来创建一个简单服务器
- 【Nginx】开发一个HTTP过滤模块
- Nginx之一:实现简单HTTP模块helloworld
- Nginx之一:实现简单HTTP模块helloworld
- nginx学习笔记(2):开发一个简单的HTTP模块