web-dev-qa-db-ja.com

AJPプロキシ構成で何を構成する必要がありますか?

製品に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>
1
Michael

OK、修正が必要なApache構成についていくつかの誤解があります。

  1. <Directory>ブロックは、ファイルシステムの絶対パスを参照します。 URIパスまたはドキュメントルートに関連するパスではありません。 David Hutchinsonが述べたように、プロキシするときは、代わりに<Location>ブロックを使用する必要があります。
  2. <Proxy>ブロックは、(ほとんど)フォワードプロキシを構成するために排他的に使用されますnotリバースプロキシ。これらのブロックを削除します。必要ありません。ここでも、<Location>ブロックを使用します。
  3. <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>

デフォルトであった削除ディレクティブがあります。

3
Unbeliever

達成しようとしていることを実行するために、「<Proxy」ブロックはまったく必要ありません。

ProxyPassおよびProxyPassReverseディレクティブだけが必要です。ただし、読みやすくするために、両方をLocationブロックに固定するか、どちらにも固定しないことをお勧めします。

クライアント証明書認証など、アプリパスにさまざまな設定を構成する必要がある場合は、構成に既に含まれているように、Location(またはLocationMatch)ブロックを使用します。

2
David Hutchison

<Proxy *>を使用できます。これでいいと思います。

0
lazzio