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

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

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

我在新主机上设置了 nginx,作为主站点的 RP。这样可以设置一条替换规则:

sub_filter      Originalstring  'new string';
sub_filter_once off;

不过,我希望制定几条规则,sub_filter 每个位置仅允许一个

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

答案1

现在你可以将 nginx 升级到 1.9.4

*) Feature: multiple "sub_filter" directives can be used simultaneously.

请参阅此处的完整变更日志:http://nginx.org/en/CHANGES

答案2

与前一个版本不同,当前版本的 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;
}

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

subs_filter运行此命令,确保已安装 nginx。在输出中nginx -V查找。--with-http_sub_module

答案3

查看HttpSubs模块模块。摘自文档:

每个位置可以指定多个替换规则

答案4

我猜您可能设置了多个位置或服务器名称,sub_filter每个搜索一个,并通过它们代理请求。

相关内容