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;
:是否仅替换一次,默认on
sub_filter_types mime-type;
:过滤的mime类型,默认为text/html
,所有为*
使用例子
官网给出的参考用例:
1 |
location / { |
配置在www.i5zhen.com
上的用例,直接反代关于页面的同时,替换资源至源站:
1 |
location / { |
注意点
sub_filter_types text/html;
默认已配置,若重复配置会出错- 反代时若源服务器启用了gzip压缩,则需要加上请求头
Accept-Encoding
指定为空,要求对方不压缩 - 新旧字符串内不需要转义字符