![nginx 上的反向代理有多个 sub_filter 规则吗?](https://linux22.com/image/552860/nginx%20%E4%B8%8A%E7%9A%84%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E6%9C%89%E5%A4%9A%E4%B8%AA%20sub_filter%20%E8%A7%84%E5%88%99%E5%90%97%EF%BC%9F.png)
没有任何邪恶计划,我正在尝试镜像其他域下的站点,同时动态地更改一些字符串。
我在新主机上设置了 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
每个搜索一个,并通过它们代理请求。