リバース プロキシ - プロキシ パスの理解 - apache mod_proxy

リバース プロキシ - プロキシ パスの理解 - apache mod_proxy

私は Linux サーバーで tomcat を実行しており、これにリバース プロキシを使用したいと考えています。mod_proxy の Apacha のマニュアルを読んだ後、proxypass の /path がよくわかりませんでした。

小さな例を作ります。私の Tomcat のディレクトリは /tomcat/webapp です。次の構成は正しいでしょうか?

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyRequests Off
ProxyPass /tomcat/webapp         http://127.0.0.1:8080
ProxyPassReverse /tomcat/webapp  http://127.0.0.1:8080
</VirtualHost> 

ありがたいです。経験のある人が私を助けてくれると思います。

答え1

理論的には、どのディレクティブを選択しても、としてProxyPassプロキシすることを選択した場合でも機能します。http://example.com:8080/webapp/http://example.com/foo/bar/baz/

ただし、アプリケーションがハイパーリンクで絶対パスを使用する場合は、両方のURLで同じURIパスを使用することをお勧めします。アパッチそしてトムキャットまたは、次のような問題が発生することがありますこの質問。 それで:

  • アプリケーションが適切に記述されている場合は、お気に入りの URL を選択し、それに適合するように Tomcat 上の Web アプリケーションのデプロイメントを調整します。
  • アプリケーションが適切に記述されていない場合(例えば、次のようにハードコードされたパスがある場合)この質問調整するアパッチハードコードされたデプロイメント パスに適合するパス。

どちらの場合も、以下を使用する必要があります。

ProxyPass "/path/to/webapp/" "http://127.0.0.1:8080/path/to/webapp/"

追伸: どうやらあなたは2つのポートでTomcatを実行する8443プロキシされていること、およびそのポートが SSL 経由でアクセスされることを Web アプリケーションに通知する方が適切です。

<Connector port="8080"
           proxyName="example.com"
           proxyPort="80"
           redirectPort="443" />
<Connector port="8443"
           proxyName="example.com"
           proxyPort="443"
           scheme="https" secure="true" />

そうすれば、Web アプリケーションはポートから8443ポートへの無駄なリダイレクトを生成しなくなります443

関連情報