Nginx配置动态替换
Nginx的ngx_http_sub_module模块可以很方便的实现:在返回资源时动态替换某些关键字。但是这个模块默认并没有启用,在编译时需要手动添加--with-http_sub_module编译参数。要查看当前Nginx是否集成该模块,可以使用如下命令:
1 |
nginx -V 2>&1 | grep -q http_sub_module && echo "ok" |
关键配置项
sub_filter old_text new_text;:将旧文本替换为新文本,可以放在http或server或location范围下sub_filter_once on;:是否仅替换一次,默认onsub_filter_types mime-type;:过滤的mime类型,默认为text/html,所有为*
使用例子
官网给出的参考用例:
1 |
location / { |
配置在www.i5zhen.com上的用例,直接反代关于页面的同时,替换资源至源站:
1 |
location / { |
注意点
sub_filter_types text/html;默认已配置,若重复配置会出错- 反代时若源服务器启用了gzip压缩,则需要加上请求头
Accept-Encoding指定为空,要求对方不压缩 - 新旧字符串内不需要转义字符