Nginx 的过滤模块是干啥用的?( 二 )

实战配置文件如下:
server {server_name sub.ziyang.com;error_loglogs/myerror.loginfo;location / {sub_filter 'Nginx.oRg''$host/nginx';sub_filter 'nginX.cOm' '$host/nginx';#sub_filter_once on;sub_filter_once off;#sub_filter_last_modified off;sub_filter_last_modified on;}}这里需要重新编译 Nginx,我这里把下一节需要的模块也一起编译进去了:
./configure --prefix=/Users/mtdp/myproject/nginx/test_nginx --with-http_sub_module --with-http_addition_module --with-http_realip_modulemakecp nginx ../../test_nginx/sbin/ # 复制编译好的 nginx 到之前的目录执行热部署:

热部署的流程详见 Nginx 入门及命令行操作
kill -USR2 87693 # 使用新的 Nginx 二进制文件提供服务kill -WINCH 87693 # 退出老的 Nginx 的 worker 进程kill -quit 87693 # 优雅的退出老的 master 进程在浏览器中打开 sub.ziyang.com:
Nginx 的过滤模块是干啥用的?

文章插图
 
这里面会发现,nginx.org 已经替换成了 sub.ziyang.com/nginx,nginx.com 也替换成了 sub.ziyang.com/nginx 。
addition 模块下面再来看一个过滤模块,addition 模块,它可以在响应的前后添加内容 。
  • 功能:在相应前或者响应后增加内容,增加内容的方式,是通过新增子请求,根据子请求的响应来完成 。
  • 模块:ngx_http_addition_filter_module 默认未编译进 Nginx,通过 --with-http_addition_module 启用
指令Syntax: add_before_body uri;Default: —Context: http, server, locationSyntax: add_after_body uri;Default: —Context: http, server, locationSyntax: addition_types mime-type ...;Default: addition_types text/html; Context: http, server, location这里的三个指令都比较简单,说一下 add_before_body 和 add_after_body 后面的 uri,这个的意思是说,向指定 uri 发起子请求,根据子请求的响应来添加内容 。
addition_types 指令是指定要添加的文件类型 。
实战配置文件如下:
server {server_name addition.ziyang.com;error_log logs/myerror.log info;location / {#add_before_body /before_action;#add_after_body/after_action;#addition_types *;}location /before_action {return 200 'new content beforen';}location /after_action {return 200 'new content aftern';}location /testhost {uninitialized_variable_warn on;set $foo 'testhost';return 200 '$gzip_ration';}}先看在注释掉 addition 模块的指令的情况下,会是什么效果:
?~ curl addition.ziyang.com/a.txta然后打开注释:
?~ curl addition.ziyang.com/a.txtnew content beforeanew content after在原响应前后都增加了内容 。
这里面需要注意一点,在实际情况下,add_before_body 和 add_after_body 后面是其他的 uri,我这里为了简化,直接转发到对应的 location 。
【Nginx 的过滤模块是干啥用的?】本文涉及到的所有配置文件我已经放在了 Nginx 配置文件,大家可以自取 。


推荐阅读