我試圖重寫使用類似這樣的代理的網頁的鏈接體: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;