6

次のようなものを使用して、プロキシされたページの本文リンクを書き換えようとしています:

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

これはまったく行く方法ですか?sub_filter モジュールSubstitutions_filterの違いは何ですか

また、sub_filter 宣言で変数を使用できますか?

4

2 に答える 2

13

これは、プロキシされたページのリンクを書き換える完全に有効な方法です。「モジュールは、指定された文字列を別の文字列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;
于 2014-10-17T11:01:12.910 に答える
4

理想的には、バックエンドに正しいリンクを書き込むように依頼する必要があります。サブフィルターを使用していくつかの単純なケースを修正することは可能ですが、一般的に可能なことではありません (たとえば、返されたデータがテキストではなくフラッシュ コードである場合)。

sub_filter の置換文字列で変数を使用できます (ただし、元の応答で一致する文字列では使用できません)。明示的に文書化されています。

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

サブフィルターに関しては、より強力であると予想されるサードパーティのモジュールですが、より多くのバグが含まれている可能性があります。標準のサブフィルターで十分である限り、おそらくサードパーティのサブフィルターを使用したくないでしょう。

于 2012-09-19T10:41:45.347 に答える