製品にApacheHTTPDサーバーがあり、特定のアプリケーションにAJPプロキシを追加する必要があります。
Tomcat AJPポートは8009で、Tomcat HTTPポートは8080です(SSLターミネーションはApacheで行われます)。これは、構成する必要のあるAJPプロキシです。
<Directory /app>
AuthType None
Allow from all
Satisfy any
AllowOverride None
Options None FollowSymLinks
</Directory>
<Proxy http://localhost:8080/app >
AuthType None
Allow from all
Order Deny,Allow
Satisfy any
Options None FollowSymLinks
</Proxy>
ProxyPass /app ajp://localhost:8009/app
<Location /app>
ProxyPassReverse ajp://localhost:8009/app
</Location>
質問:<Proxy … >
で何を構成する必要がありますか? <Proxy http://localhost:8080/app >
または<Proxy ajp://localhost:8009/app >
追加明確化。構成全体には、ルート構成が含まれます(以下を参照)。
特定のアプリケーションにAJPプロキシを追加する必要があります。
<Directory />
Deny from all
Allow from localhost
Order Deny,Allow
AuthType Basic
Require valid-user
AllowOverride None
Satisfy any
Options None FollowSymLinks
</Directory>
<Proxy *>
Deny from all
Order Deny,Allow
AuthType Basic
Require valid-user
Satisfy any
Options None FollowSymLinks
</Proxy>
OK、修正が必要なApache構成についていくつかの誤解があります。
<Directory>
ブロックは、ファイルシステムの絶対パスを参照します。 URIパスまたはドキュメントルートに関連するパスではありません。 David Hutchinsonが述べたように、プロキシするときは、代わりに<Location>
ブロックを使用する必要があります。<Proxy>
ブロックは、(ほとんど)フォワードプロキシを構成するために排他的に使用されますnotリバースプロキシ。これらのブロックを削除します。必要ありません。ここでも、<Location>
ブロックを使用します。<Location>
内でProxyPass
またはProxyPassReverse
を使用しないでください。それは有効ですが、物事を複雑にする可能性があります。これらのディレクティブの2つの引数バージョンを使用するだけです。また、そうしない理由がない限り、これらのディレクティブの両方で末尾のスラッシュを使用してください。ロケーションブロックの順序を逆にする必要がある場合があります(頭のてっぺんから正しい順序を思い出せません)が、次のようなものから始めます。
ProxyPass /app/ ajp://localhost:8009/app/
ProxyPassReverse /app ajp://localhost:8009/app/
<Location />
Order Allow,Deny
Allow from localhost
AuthType Basic
Require valid-user
</Location>
<Location /app/>
Allow from all
</Directory>
デフォルトであった削除ディレクティブがあります。
達成しようとしていることを実行するために、「<Proxy」ブロックはまったく必要ありません。
ProxyPassおよびProxyPassReverseディレクティブだけが必要です。ただし、読みやすくするために、両方をLocationブロックに固定するか、どちらにも固定しないことをお勧めします。
クライアント証明書認証など、アプリパスにさまざまな設定を構成する必要がある場合は、構成に既に含まれているように、Location(またはLocationMatch)ブロックを使用します。
<Proxy *>
を使用できます。これでいいと思います。