2012-09-17 86 views

回答

4

理想情況下,您應該要求後端編寫正確的鏈接。儘管可以使用子過濾器來修復一些簡單的情況,但這通常不是可能的(例如,如果返回的數據不是文本,而是例如閃存代碼)。

可以在sub_filter使用變量替換字符串(但不是在字符串中的原始響應匹配),它是明確documented

替換字符串可以包含變量。

至於subs濾波器 - 這是一個第三方模塊,預計會更強大,但可能包含更多的錯誤。只要標準的子過濾器足夠你 - 你可能不想使用第三方潛艇過濾器。

8

這是在代理頁面上重寫鏈接的完美有效方法。 「的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;