AJP 代理配置需要配置什么?

AJP 代理配置需要配置什么?

我们的产品中有 Apache HTTPD 服务器,我需要将 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

好的,您对 Apache 配置有几个误解需要纠正。

  1. <Directory>块指的是绝对文件系统路径。不是 URI 路径或相对于文档根目录的路径。正如 David Hutchinson 所提到的,在代理时,您应该使用<Location>块。
  2. <Proxy>块(几乎)专门用于配置正向代理,不是反向的。删除这些块,你不需要它们。再次使用<Location>块。
  3. 不要在 内使用ProxyPass或。虽然这样做是有效的,但会使事情变得复杂。只需使用这些指令的两个参数版本即可。此外,除非您有理由不这样做,否则请在这两个指令中使用尾部斜杠。ProxyPassReverse<Location>

位置块的顺序可能需要反转(我记不清正确的顺序了),但可以先从类似以下内容开始:

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>

我已删除默认指令。

答案2

您根本不需要“<Proxy”块来完成您想要实现的目标。

ProxyPass 和 ProxyPassReverse 指令就是您所需要的。但为了便于阅读,我建议要么将两者都放在 Location 块中,要么都不放。

如果您需要为应用路径配置不同的设置,例如客户端证书身份验证,请使用您已在配置中拥有的位置(或 LocationMatch)块。

答案3

您可以使用<Proxy *>。我认为这样会很好。

相关内容