0

我在我们的三个环境(DEV/QA/PROD)的 docker 容器中运行 ActiveMQ Artemis。

管理控制台通常在端口 8161 上运行,因此我在artemis create创建代理时将其包含在语句中。

--http-host 0.0.0.0 --http-port 8161

所以这会导致我可以看到以下两个变化:

  1. bootstrap.xml 获取主机/端口:

    <web bind="http://0.0.0.0:8161" path="web">
       <app url="redhat-branding" war="redhat-branding.war"/>
       <app url="artemis-plugin" war="artemis-plugin.war"/>
       <app url="dispatch-hawtio-console" war="dispatch-hawtio-console.war"/>
       <app url="console" war="console.war"/>
    </web>
    
  2. jolokia-access.xml 获取主机/端口:

    <allow-origin>*://0.0.0.0*</allow-origin>
    

我正在尝试从远程计算机访问 ActiveMQ Artemis Hawtio 管理控制台,但暴露的 docker 端口不是8161. 它们是映射的端口38161, 48161, & 58161

因此,当我登录管理控制台时,我得到:

Operation unknown failed due to: java.lang.Exception : Origin http://10.0.20.2:58161 is not allowed to call this agent
Uncaught TypeError: Cannot read property 'apply' of undefined (http://10.0.20.2:58161/console/app/app.js:16:14127)
Uncaught TypeError: Cannot read property 'apply' of undefined (http://10.0.20.2:58161/console/app/app.js:16:14127)
...
4

2 回答 2

3

我相信这里的问题是你的 jolokia-access.xml 使用这个:

<allow-origin>*://0.0.0.0*</allow-origin>

但是,您正在尝试访问http://10.0.20.2:58161基于您的jolokia-access.xml. 因此,您需要更改jolokia-access.xml以允许您实际用于连接的 IP:port。

您可以在Jolokia 安全文档中阅读有关 jolokia-access.xml 的更多信息。

为了清楚起见,元地址0.0.0.0基本上是“无特定地址”占位符,在将侦听器绑定到网络接口的上下文中,这意味着侦听器应该绑定/侦听所有接口。但是,在<allow-origin>Jolokia 安全性的上下文中,这并不意味着允许所有来源。<allow-origin>支持文字匹配和通配符(如上面链接的文档中所述)。因此,如果0.0.0.0指定了它,它会尝试从字面上匹配0.0.0.0。无法通过该create命令禁用 Jolokia 安全性。如果您要向命令传递类似--http-host 10.0.20.*create内容,10.0.20.*则将用于绑定bootstrap.xml将失败的网络服务器。

可以选择使用--relax-jolokiawhich 将禁用严格检查,这可能有助于您的用例。

于 2019-02-27T20:50:25.967 回答
0

只需要更改 jolokia-access.xml 文件即可编辑 cors :

<allow-origin>*://*</allow-origin>

有关这方面的更多信息,您可以参考:https ://medium.com/@hasnat.saeed/setup-activemq-artemis-on-ubuntu-18-04-76bb4975308b

于 2020-05-27T16:13:12.070 回答