web-dev-qa-db-ja.com

リバースプロキシを使用して、ヘッダー値をパラメーターとしてURLに配置します

元のリクエストのヘッダー値をパラメーターとして宛先URLに配置するリバースプロキシを設定する必要があります。この理由は純粋にアプリケーション固有であり、残念ながらこのアプリケーションを変更することはできません。たとえば、次のものが必要です https://a.com httpヘッダー付きmyparam = abcdにプロキシする必要があります http://b.com/?val=abcd ==

そのようなタスクを実行するようにIISまたはApacheを構成することは可能ですか?その場合、その方法を説明できますか?

4
kulatamicuda

Apache 2.4でテスト済み:

# (In a VirtualHost for a.com)
RewriteEngine on
RewriteRule ^(.*)$ http://b.com$1?val=%{HTTP:myparam} [QSA,P]

書き換えの例(ヘッダーmyparamの値がmyvalueの場合):

  • a.comhttp://b.com?val=myvalueになります
  • a.com/path/herehttp://b.com/path/here?val=myvalueになります
  • a.com/path?a=b&c=dhttp://b.com/path?a=b&c=d&val=myvalueになります

myparamヘッダーが存在しない場合、a.com/xhttp://b.com/x?val=にリダイレクトされます。 http://b.com/xにリダイレクトする場合は、上記の次の長いバージョンを使用できます。

RewriteEngine on
RewriteCond %{HTTP:myparam} .
RewriteRule ^(.*)$ http://example.com$1?val=%{HTTP:myparam} [QSA,L,P]
RewriteRule ^(.*)$ http://example.com$1 [P]

関連リンク:

2
user49740

IISの場合、 RL書き換え拡張機能 を使用できます:

IIS URL Rewrite 2.0を使用すると、Web管理者は、ユーザーが覚えやすく、検索エンジンが見つけやすいURLを実装するための強力なルールを作成できます。ルールテンプレート、書き換えマップ、.NETプロバイダー、およびIIS Manager)に統合されたその他の機能を使用することにより、Web管理者は、HTTPヘッダー、HTTP応答、または要求に基づいてURL書き換え動作を定義するルールを簡単に設定できます。ヘッダー、IISサーバー変数、さらには複雑なプログラムルール。さらに、Web管理者は、書き換えルールで表現されたロジックに基づいて、リダイレクトを実行したり、カスタム応答を送信したり、HTTP要求を停止したりできます。

動作:IIS 7、IIS 7.5、IIS 8

ウォークスルーは次の場所にあります: RL書き換えモジュールの書き換えルールの作成

1
harrymc