web-dev-qa-db-ja.com

httpとhttpsに基づいてmod_proxyをProxyPassに構成する方法

SSLを有効にしてApache Tomcatを実行しています。私はApache HTTP Serverをリバースプロキシとして機能させているので、ユーザーが http:// myserver/Tomcat / を押すと、それらは http:// myserver:808 に渡されます。

ProxyPass /Tomcat/ http://myserver:8080/
ProxyPassReverse /Tomcat/ http://myserver:8080/

Apache HTTPサーバーもSSL用に構成されているので、ユーザーが https:// myserver/Tomcat / を押すと、それらは https:// myserver:8443 / に渡される必要があります。

現在のProxyPassおよびProxyPassReverse構成では、非SSL URLにリダイレクトされます。着信要求に基づいて別のプロトコルとポートにリダイレクトするようにプロキシパスを設定するにはどうすればよいですか?

つまり、誰かがHTTPS経由で入ってくる場合、どうすればTomcat @ https:// myserver:844 にリダイレクトできますか?


更新:

@ mike-insch

私は試した:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /Tomcat/ http://myserver:8080/
    ProxyPassReverse /Tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /Tomcat/ https://myserver:8443/
    ProxyPassReverse /Tomcat/ https://myserver:8443/
</VirtualHost>

今私がアクセスすると: https:// myserver/Tomcat / 「ページが見つかりません」と表示されます。エラーログに「ファイルが存在しません:/ var/Apache2/htdocs/Tomcat」と表示されます

これは正しいですが、リクエストが https:// myserver:8443 / で実行されているTomcatにルーティングされることを期待していました。

目立って間違っているように見えない限り、私は仮想ホストをさらに詳しく調べる必要があると思います。

9
codecraig

これを行うには、2つの独立した<VirtualHost *:X>ディレクティブ。 HTTPディレクティブは<VirtualHost *:80>HTTPSディレクティブは<VirtualHost *:443>。サーバーに複数のアドレスベースまたは名前ベースの仮想ホストが構成されている場合は、必要に応じて調整します。詳細については、Apache 2のドキュメントを参照してください。

5
Mike Insch

完全を期すため、オプションの場合は、TomcatでSSLを処理するのではなく、ApacheでSSLを終了することをお勧めします。 Tomcatを提供することは、Apacheからのみアクセス可能であり、これはより単純で安全です。

この設定では、ApacheはHTTPおよびHTTPSをhttp://myserver:8080/にプロキシします。

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /Tomcat/ http://myserver:8080/
    ProxyPassReverse /Tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /Tomcat/ http://myserver:8080/
    ProxyPassReverse /Tomcat/ http://myserver:8080/
</VirtualHost>
6
David Carboni