Httpリクエストヘッダー値に基づいて、httpトラフィックを特定のバックエンドサーバーに転送できるかどうか疑問に思いました。例の「リファラー」httpヘッダー値。
2つのサーバーインスタンスがあります。 1つはUAT(テスト)用で、もう1つは実稼働前の使用用です。これら2つのサーバーインスタンスの前にApacheリバースプロキシを配置したいと考えています。そして、httpリクエストが来たら、「referer」httpヘッダー(uatまたはpre-prod)の値に基づいて、リバースプロキシがリクエストを正しいバックエンドサーバーインスタンスに送信するようにしたいと思います。
これは可能ですか?
ありがとう
はい、可能です。
REFERERヘッダーの条件チェックに基づいて書き換えルールを作成します。
%{HTTP:header}(headerは任意のHTTP MIMEヘッダー名にすることができます)は、常にHTTP要求で送信されたヘッダーの値を取得するために使用できます。例:%{HTTP:Proxy-Connection}は、HTTPヘッダー `` Proxy-Connection: ''の値です。
RewriteCond %{HTTP:Referer} =="xyz.com/abcd"
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
より正確にするために、より多くの情報(つまり、より正確な例)が必要になる場合がありますが、ここで作業する必要があります。
RewriteCond %{HTTP:Referer} webapp-uat
RewriteRule (.*) http:/uat-backend/$1 [P,L]
RewriteCond %{HTTP:Referer} webapp-qa
RewriteRule (.*) http:/qa-backend/$1 [P,L]
それがあなたが始めるのに十分であることを願っています。