nginx 上反向代理的多个 sub_filter 规则?

Ser*_*iks 7 rewrite nginx reverse-proxy

没有邪恶的计划,我试图在其他域下镜像站点,同时动态更改一些字符串。

我在新主机上设置了 nginx 作为主站点的 RP。这允许设置一个替换规则:

sub_filter      Originalstring  'new string';
sub_filter_once off;
Run Code Online (Sandbox Code Playgroud)

但是,我想运行多个规则,其中sub_filter 每个位置只允许一个

如果有的话,这里有什么解决方案?

小智 7

与前一个不同,当前版本的 nginx 允许在一个 location 指令下创建多个子过滤器规则。像这样

location / {
   resolver   8.8.8.8;
   proxy_pass http://original-domain.com;
   proxy_set_header Accept-Encoding "";
   proxy_set_header Host original-domain.com;

   subs_filter_types text/css text/xml text/css;
   subs_filter a.original-domain.com b.mydomain.com;
   subs_filter http://$host https://$host;
}
Run Code Online (Sandbox Code Playgroud)

您最多可以添加 255 个过滤器。见http://wiki.nginx.org/HttpSubsModule

subs_filter通过运行此命令确保您已经安装了 nginx nginx -V--with-http_sub_module在输出中寻找。


小智 2

现在你可以将nginx升级到1.9.4

*) Feature: multiple "sub_filter" directives can be used simultaneously.
Run Code Online (Sandbox Code Playgroud)

请在此处查看完整的更改日志: http: //nginx.org/en/CHANGES