我的产品中有 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>
好的,您对 Apache 配置有几个需要纠正的误解。
<Directory>
块是指绝对文件系统路径。不是 URI 路径或相对于文档根目录的路径。正如 David Hutchinson 所提到的,在代理时,您应该改用<Location>
块。<Proxy>
块(几乎)专门用于配置正向代理,而不是反向代理。删除这些块,您不需要它们。再次,使用<Location>
块。ProxyPass
或ProxyPassReverse
在里面<Location>
。虽然它是有效的,但它会使事情复杂化。只需使用这些指令的两个参数版本。此外,除非您有理由不这样做,否则请在这两个指令中使用斜杠。位置块的顺序可能需要颠倒(我不记得正确的顺序),但从以下内容开始:
我已经删除了默认的指令。
您根本不需要“<Proxy”块来完成您想要实现的目标。
您只需要 ProxyPass 和 ProxyPassReverse 指令。但是,为了便于阅读,我建议要么将两者都粘贴在 Location 块中,要么都不粘贴。
如果您需要为您的应用程序路径配置不同的设置,例如客户端证书身份验证,请使用您在配置中已有的位置(或 LocationMatch)块。
你可以只使用
<Proxy *>
. 我认为这会很好。