これは私を夢中にさせています。EC2 でコンテンツを提供するアクティブで使用中の Apache プロキシ サーバーがあります。それはうまく機能しており、次のように構成されたさまざまな仮想ホストがあります。
<VirtualHost *:80>
ServerName m.FOO.com
ServerAlias customer.FOO.com
ProxyPreserveHost On
ProxyPass / ajp://10.211.42.48:8009/
ProxyPassReverse / ajp://10.211.42.48:8009/
<Proxy ajp://10.211.42.48:8009/*>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
これらはすべてうまく機能し、問題はありません。今私がやりたいのは、それを移動することです。そのため、アプリごとに単一の vhost の代わりに、アプリサーバーにプロキシするメイン サイトにサブ URL が必要です。したがって、「customer.FOO.com」を持つ顧客の代わりに、「FOO.com/customer/」を持つことになります。
簡単ですね。ええ、そうではありません。サーバーの「ルート」の vhost エントリ (現在ランディング ページを表示) を編集し、その中のディレクトリにプロキシ エントリを追加します。それはそれをするべきですよね?ええ、そうではありません:
<VirtualHost *:80>
ServerName web01.aws.FOO.com
DocumentRoot /var/www/html
ErrorLog logs/www.FOO.com-error_log
CustomLog logs/www.FOO.com-access_log common
<Location /a>
ProxyPass ajp://10.211.42.48:8009
ProxyPassReverse ajp://10.211.42.48:8009
</Location>
<Location /t>
ProxyPass http://adm01
ProxyPassReverse http://adm01
</Location>
<Proxy ajp://10.211.42.48:8009/*>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
http://www.FOO.com/t/にアクセスすると、内部 Web サーバーが取得され、正しくプロキシ転送され、すべて問題ありません。http://www.FOO.com/a/にアクセスすると、404 エラーが発生します。アクセスログにも 404 エラーが表示されます。
ProxyPass AJP エントリは、他の vhost エントリの内容と同じであることに注意してください。では、メイン vhost のサブディレクトリとしてではなく、他の vhost エントリのルートで機能するのはなぜですか?
ハーフ!