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


9

SSLを有効にしてApache Tomcatを実行しています。私はリバースプロキシとして動作するApache HTTPサーバーを持っているので、ユーザーがhttp:// myserver / tomcat /押すと、それらはhttp:// myserver:8080に渡されます

ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/

SSL用に構成されたApache HTTPサーバーも持っているので、ユーザーがhttps:// myserver / tomcat /押すと、それらはhttps:// myserver:8443 /に渡されるはずです。

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

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


更新:

@ 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にルーティングされることを期待していました。

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


NameVirtualHostここではディレクティブは必要ないと思います。また、<VirtualHost *:443>セクション内でSSLを有効にするための適切なディレクティブを追加する必要があります。
Mike Insch、2011

回答:


5

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


だから私は以下を追加しました:NameVirtualHost *:443
codecraig

3
SSLProxyEngine onディレクティブを追加することを忘れないでください
Ryan

6

完全を期すため、オプションの場合は、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>

1
これを行う場合、両方のVirtualHostsでプロキシディレクティブを繰り返す必要はありません。それらをサーバーコンテキストに引き出すことができます。
アミットナイドゥ2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.