私は、すべてがapache VirtualHost(同じサーバーで実行されているApache)を介して提供される複数のWebアプリケーションでサーバーをセットアップしようとしています。私の主な制約は、各WebアプリケーションがSSL暗号化を使用する必要があることです。しばらくグーグルで調べ、stackoverflowに関する他の質問を見た後、VirtualHostの次の構成を作成しました。
<VirtualHost 1.2.3.4:443>
ServerName host.example.org
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
にもかかわらずhttps://host.example.org:8443がアクセス可能であり、https://host.example.orgは私のバーチャルホストの設定の目的に反している、ではありません。Firefoxは、サーバーへの接続に成功したにもかかわらず、接続が中断されたことを訴えます。また、apacheのerror.logに次の警告が表示されます。
proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be host.example.org for uri
Webアプリケーション(Tomcatサーバー)で、アクセスログに奇妙なアクセス要求が表示されます。
"?O^A^C / HTTP/1.1" 302
以下は、https://host.example.org :8443に直接接続したときに得られる正しいアクセス要求です。
"GET / HTTP/1.1" 302
最後に、SSLを使用しない場合でも仮想ホストが完全に正常に機能することにも言及する必要があります。
この作業を行うにはどうすればよいですか?
ProxyPreserveHost On
それを避けることは、ほとんど常に間違っていて、役に立たず、ほとんど常に壊れProxyPassReverse
ます。サイドノートProxyRequests off
がデフォルトなので、冗長です。