在 apache 2 上的虚拟主机中禁用 ProxyPass 规则

在 apache 2 上的虚拟主机中禁用 ProxyPass 规则

我在 httpd.conf 中有一个全局 proxypass 规则

全球层面的规则

ProxyPass /test/css http://myserver:7788/test/css
ProxyPassReverse /test/css http://myserver:7788/test/css

我有一个虚拟主机

Listen localhost:7788
NameVirtualHost localhost:7788
<VirtualHost localhost:7788>
    Alias /test/css/ "C:/jboss/server/default/deploy/test.ear/test-web-app.war/css/"
</VirtualHost>

我想禁用此虚拟主机中应用的所有全局 proxypass 规则?NoProxy 似乎不起作用。

(我想要这样做的原因是我有以下全局规则,如果应用于此虚拟主机,则会创建 502 代理循环

#pass all requests to application server
ProxyPass        /test      http://localhost:8080/test
ProxyPassReverse /test      http://localhost:8080/test

我想要做的是,使用 apache 提供所有静态内容(如 css),同时仍然将所有其余请求代理到应用程序服务器。

答案1

在虚拟主机中,尝试这样的操作

<VirtualHost localhost:7788>
    ProxyPass /test/css !
    Alias /test/css/ "C:/jboss/server/default/deploy/test.ear/test-web-app.war/css/"
</VirtualHost>

说不!代理此路径。试试看……?

您也可以尝试ProxyRequests 关闭在您的 vhost 配置中。

答案2

假设我理解了您要做什么,我会摆脱代理,并使用 location 或 locationmatch 块来捕获 css 请求。我会将其放在 apache 的主站点配置中。

我猜你要么正在使用代理,要么正在使用 AJP 连接器连接到 Jboss。将其放在位置块后面。你可以在此处放置到 jboss 的代理传递。然后,你将 Apache 的文档根目录设置为 war 目录的顶部。你可能还想保留虚拟主机的别名。

经过进一步思考,这可能更简单

将其放在任何虚拟主机之外的主 http.conf 中

别名 /test/css/ "C:/jboss/server/default/deploy/test.ear/test-web-app.war/css/" 命令允许、拒绝 允许所有

我假设您在同一台服务器上运行所有这些(Jboss、apache)。请注意,如果您还有其他希望 Apache 提供服务的东西,您可以将目录块中的路径更改为 test-web-app.war 目录并添加更多别名。

您可能还希望将 Proxypass 调整到 Jboss,以便您可以为希望 JBoss 处理的任何目录设置一个。将其放在上述目录块之后可能会有效

相关内容