6

リクエスト ヘッダーに基づいて、Apache でリクエストを別のフォワード プロキシに転送したいと考えています。mod_rewrite を使用するのが最善だと思いますが、同じ apache 構成で定義されたリバース プロキシしか使用できません。

mod_proxy の ProxyRemote プロパティも確認しましたが、条件に基づいて使用することはできず、リクエスト URL に基づいてのみ使用できます。

次のようなものが必要です:

X-CUSTOM-HEADER が値 1 の場合 -> 転送要求を転送プロキシ p1 に転送 X-CUSTOM-HEADER が値 2 の場合 -> 転送要求を転送プロキシ p2 に転送

誰かがこのようなものを作ることができましたか?

ありがとう、アリン

4

3 に答える 3

2

私は解決策を見つけましたが、それは本当にエレガントではありません。2番目のサーバーでもいくつかの適応が必要です。

これは、私が同様の問題を抱えていたプロジェクトから派生したものですが、サーバーを「完全に」(データベース リソースを使用するカスタム スクリプトによって選択) する必要がありました。

これは少なくとも機能するはずです (URL を書き換えマップで実行して変更し、 を使用してヘッダーを使用するように調整しましたRewriteCond)。

# example for server number "5" in your remote proxy network
RewriteCond %{HTTP:X-CUSTOM-HEADER} 1
RewriteRule http://([a-z0-9\.]+)/(.*) http://$1.5.server.yourdomain.com$1 [P] 
ProxyRemoteMatch .*\.5\.server\.yourdomain\.com.* http://5.server.yourdomain.com:80

基本的に、2 番目のサーバーのサブドメインになるように URL を調整してから、再度削除します。
この部分は 2 番目 (リモート プロキシ サーバー) に続きます。

<ProxyMatch "http://.*\.[0-9]+\.server\.yourdomain\.com/.*">
    RewriteEngine on
    RewriteRule (proxy:http[s]?://.+)\.[0-9]+\.server\.premiumize\.me(.+) $1$2 
    ... your code ...
</ProxyMatch>
于 2011-09-10T16:26:20.537 に答える
1

これを試して:

# Prevents Apache from functioning as a forward proxy server (where you don't want)
ProxyRequests Off
# Preserve Host in http protocol on destination server
ProxyPreserveHost On
<Proxy *>
   Order deny,allow
   Allow from all
</Proxy>
# enable rewrite engine
RewriteEngine On 
# check header
RewriteCond %{HTTP:X-CUSTOM-HEADER} 1
# execute forward proxy
RewriteRule (.*) http://server1/$1 [P,L,QSA]

# check header
RewriteCond %{HTTP:X-CUSTOM-HEADER} 2
# execute forward proxy
RewriteRule (.*) http://server2/$1 [P,L,QSA]
于 2012-01-17T15:55:41.453 に答える
0

%{HTTP:header}で検証するRewriteCondディレクティブを使用することでそれを達成できるはずです。

次のことを試してください。

RewriteEngine On 

RewriteCond %{HTTP:X-CUSTOM-HEADER} 1
RewriteRule (.*) http://p1.example.com$1 [P] 
ProxyPassReverse / http://p1.example.com

RewriteCond %{HTTP:X-CUSTOM-HEADER} 2
RewriteRule (.*) http://p2.example.com$1 [P] 
ProxyPassReverse / http://p2.example.com

それが役に立てば幸い。:)

于 2011-04-02T03:40:35.260 に答える