我试图重写使用类似这样的代理的网页的链接体:Nginx的sub_filter重写?
sub_filter http://proxied.page.come http://local.page.com;
sub_filter_once off;
这是走在所有的方式? sub_filter module和substitutions_filter
之间的区别是什么也可以在sub_filter delcaration中使用变量?
我试图重写使用类似这样的代理的网页的链接体:Nginx的sub_filter重写?
sub_filter http://proxied.page.come http://local.page.com;
sub_filter_once off;
这是走在所有的方式? sub_filter module和substitutions_filter
之间的区别是什么也可以在sub_filter delcaration中使用变量?
理想情况下,您应该要求后端编写正确的链接。尽管可以使用子过滤器来修复一些简单的情况,但这通常不是可能的(例如,如果返回的数据不是文本,而是例如闪存代码)。
可以在sub_filter使用变量替换字符串(但不是在字符串中的原始响应匹配),它是明确documented:
替换字符串可以包含变量。
至于subs滤波器 - 这是一个第三方模块,预计会更强大,但可能包含更多的错误。只要标准的子过滤器足够你 - 你可能不想使用第三方潜艇过滤器。
这是在代理页面上重写链接的完美有效方法。 “的ngx_http_sub_module
模块是修改由另一替换一个指定字符串的响应的滤波器”(单取代)
第三方nginx_substitutions_filter
是一个过滤器模块,其可以执行都正则表达式和固定字符串替换在响应体上
所以第三方模块可以用来替代多个字符串,使用正则表达式和变量。例如:
subs_filter_types text/css text/xml;
subs_filter http(s)?://(www.)?proxied.page.com/ http$1://$http_host/ r;
subs_filter http(s)?://(www.)?proxied2.page.com/ http$1://$http_host/ r;