2012-09-17 49 views
5

私はこのようなものを使用して、プロキシページの本文へのリンクを書き換えしようとしています:Nginx sub_filterは書き換えますか?

sub_filter http://proxied.page.come http://local.page.com; 
    sub_filter_once off; 

は、これがすべてで移動するための方法ですか? sub_filter modulesubstitutions_filterの違いは何ですか?

また、変数はサブフィルタのデリゲーションで使用できますか?

答えて

4

理想的には、正しいリンクを書くためにバックエンドに問い合わせるべきです。サブフィルタを使用して単純なケースを修正することは可能ですが、一般的には可能ではありません(たとえば、返されたデータがテキストではなく、Flashコードなど)。

あなたは、それが明示的にdocumentedです(元の応答に一致する文字列ではなく)sub_filterに置換文字列に変数を使用することができます。

置換文字列は、変数を含めることができます。

サブフィルタは、より強力であると予想される第三者モジュールですが、バグが多く含まれる可能性があります。標準のサブフィルターで十分であれば、サードパーティーのサブフィルターを使用したくないかもしれません。

8

これは、プロキシされたページのリンクを書き換えるための完全な有効な方法です。

第三者nginx_substitutions_filter正規表現と固定文字列置換の両方を行うことができ、フィルタモジュールである(単一置換)「ngx_http_sub_moduleモジュールは、別によって1つの指定された文字列を置換することによって応答を改変するフィルタである」 on response bodies

したがって、第三者モジュールを使用して、正規表現と変数を使用して複数の文字列を置き換えることができます。例:

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; 
関連する問題