2

Apache を使用してリバース プロキシを構築しようとしています。私の目標は、フォームのすべてのリクエストを にプロキシする<subdomain>.domain.com/file.htmlことwww.domain.com/<subdomain>/file.htmlです。

どうにかし<subdomain>て元の URL をキャプチャし、それを使用してターゲット URL を構築する必要があります。

%{HTTP_HOST}ターゲット URL には元の URL のサブドメインが含まれているため、URL の の後の部分ではなく、URL 全体で正規表現に一致する Apache ディレクティブが必要だと思います。このため、このProxyPassMatchディレクティブは使用できません。URL の%{HTTP_HOST}.

もう 1 つの方法はVirtualHost、サブドメインと同じ数のセクションを使用することです。しかしもちろん、サブドメインは増え続けるため、この解決策は意味がありません。

これに取り組む方法に関するヒントはありますか?

4

1 に答える 1

1

わかりました、書き換えルールを使用して解決できました。

# Requires Apache module ``proxy_http``, ``rewrite``
<VirtualHost *:80>
    ServerName primary.domain.com
    ServerAlias *.domain.com

    ProxyRequests Off
    <Proxy *>
         Order deny,allow
         Allow from all
    </Proxy>

    RewriteEngine On

    RewriteCond %{HTTP_HOST}/%{REQUEST_URI} ^(.*)\.domain\.com/(.*)$
    RewriteRule (.*)    http://www.domain.com/%1%2 [P]

 </VirtualHost>

基本的に何が起こるかは次のとおりです。

  • RewriteCondURL が.domain.com/に一致するすべての着信要求に一致します
  • RewriteRuleリクエストを URL にプロキシしますhttp://www.domain.com/%1/%2。ここで、%1%2はそれぞれ元のリクエストのサブドメインとリクエスト URI です。
于 2012-09-30T16:27:08.257 に答える