![activeMQ 的代理传递](https://linux22.com/image/598681/activeMQ%20%E7%9A%84%E4%BB%A3%E7%90%86%E4%BC%A0%E9%80%92.png)
我有一台 Apache 服务器,我正尝试使用它来代理访问我的 activeMQ 管理页面。我能够正确加载初始登录页面,但似乎无法加载任何子页面(队列、连接等)。我在 Apache 服务器上的代理规则如下:
ProxyPass /foo http://10.5.124.108:8161/admin
ProxyPassReverse /foo http://10.5.124.108:8161/admin
activeMQ 安装在 /etc/httpd/conf.d/ 中包含一个 activemq-httpd.conf 文件。其中的代理连接已启用:
ProxyRequests On
ProxyVia On
<Proxy *>
Allow from all
Order allow,deny
</Proxy>
ProxyPass /admin http://localhost:8161/admin
ProxyPassReverse /admin http://localhost:8161/admin
ProxyPass /message http://localhost:8161/admin/send
ProxyPassReverse /message http://localhost:8161/admin/send
据我所知,proxypass 规则应该是递归的(/foo 的规则也应该适用于 /foo/bar)。这里是否还缺少了其他东西,导致我无法访问初始管理员登录页面以外的页面?
答案1
mod_proxy 不会重写目标页面中的链接,因此虽然您可以查看初始页面,但一个常见问题是指向子页面的链接包含的主机名或 URL 不会指向您有权访问的代理前端。这应该很容易在 html 源代码中发现,或者只需将鼠标悬停在链接上即可。
如果发生这种情况,可能需要将 AMQ 配置为使用代理主机的主机名而不是其自己的主机名。
Proxypass URL 是递归的,但同样,只有当链接正确时才会递归。如果您将 /message 重新映射到 /admin/send,并且下面有一个指向 /admin/send/foo 的链接 - 它不会被重定向到 /message/foo。您可能可以添加一些 mod_rewrite foo 来实现这一点,但我不相信它是 mod_proxy 的一部分。