次のようなものを使用して、プロキシされたページの本文リンクを書き換えようとしています:
sub_filter http://proxied.page.come http://local.page.com;
sub_filter_once off;
これはまったく行く方法ですか?sub_filter モジュールとSubstitutions_filterの違いは何ですか
また、sub_filter 宣言で変数を使用できますか?
次のようなものを使用して、プロキシされたページの本文リンクを書き換えようとしています:
sub_filter http://proxied.page.come http://local.page.com;
sub_filter_once off;
これはまったく行く方法ですか?sub_filter モジュールとSubstitutions_filterの違いは何ですか
また、sub_filter 宣言で変数を使用できますか?
これは、プロキシされたページのリンクを書き換える完全に有効な方法です。「モジュールは、指定された文字列を別の文字列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;
理想的には、バックエンドに正しいリンクを書き込むように依頼する必要があります。サブフィルターを使用していくつかの単純なケースを修正することは可能ですが、一般的に可能なことではありません (たとえば、返されたデータがテキストではなくフラッシュ コードである場合)。
sub_filter の置換文字列で変数を使用できます (ただし、元の応答で一致する文字列では使用できません)。明示的に文書化されています。
置換文字列には変数を含めることができます。
サブフィルターに関しては、より強力であると予想されるサードパーティのモジュールですが、より多くのバグが含まれている可能性があります。標準のサブフィルターで十分である限り、おそらくサードパーティのサブフィルターを使用したくないでしょう。