docker 容器中的 ActiveMQ Artemis GUI Jolokia 访问
ActiveMQ Artemis GUI Jolokia access in docker container
我是 运行 ActiveMQ Artemis,位于我们三个环境 (DEV/QA/PROD) 的 docker 容器内。
管理控制台通常在端口 8161 上运行,因此我在创建代理时将其包含在 artemis create
语句中。
--http-host 0.0.0.0 --http-port 8161
所以这导致了我可以看到的以下两个变化:
bootstrap.xml 得到 host/port:
<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>
jolokia-access.xml 得到 host/port:
<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)
...
我相信这里的问题是你的 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 security documentation.
中阅读更多关于 jolokia-access.xml 的信息
为清楚起见,元地址 0.0.0.0
基本上是 "no particular address" 占位符,在将侦听器绑定到网络接口的上下文中,这意味着侦听器应该 bind/listen 所有 接口。但是,在 Jolokia 安全的 <allow-origin>
上下文中,这并不意味着允许所有来源。 <allow-origin>
支持文字匹配和通配符(如上面链接的文档中所述)。因此,如果指定 0.0.0.0
,它会尝试逐字匹配 0.0.0.0
。无法通过 create
命令禁用 Jolokia 安全性。如果您要将类似 --http-host 10.0.20.*
的内容传递给 create
命令,则 10.0.20.*
将用于绑定 bootstrap.xml
中的网络服务器,这将失败。
有使用 --relax-jolokia
的选项,这将禁用严格检查,这可能有助于您的用例。
只需要对 jolokia-access.xml 文件进行更改即可编辑 cors :
<allow-origin>*://*</allow-origin>
更多相关信息您可以参考:https://medium.com/@hasnat.saeed/setup-activemq-artemis-on-ubuntu-18-04-76bb4975308b
我是 运行 ActiveMQ Artemis,位于我们三个环境 (DEV/QA/PROD) 的 docker 容器内。
管理控制台通常在端口 8161 上运行,因此我在创建代理时将其包含在 artemis create
语句中。
--http-host 0.0.0.0 --http-port 8161
所以这导致了我可以看到的以下两个变化:
bootstrap.xml 得到 host/port:
<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>
jolokia-access.xml 得到 host/port:
<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)
...
我相信这里的问题是你的 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 security documentation.
中阅读更多关于 jolokia-access.xml 的信息为清楚起见,元地址 0.0.0.0
基本上是 "no particular address" 占位符,在将侦听器绑定到网络接口的上下文中,这意味着侦听器应该 bind/listen 所有 接口。但是,在 Jolokia 安全的 <allow-origin>
上下文中,这并不意味着允许所有来源。 <allow-origin>
支持文字匹配和通配符(如上面链接的文档中所述)。因此,如果指定 0.0.0.0
,它会尝试逐字匹配 0.0.0.0
。无法通过 create
命令禁用 Jolokia 安全性。如果您要将类似 --http-host 10.0.20.*
的内容传递给 create
命令,则 10.0.20.*
将用于绑定 bootstrap.xml
中的网络服务器,这将失败。
有使用 --relax-jolokia
的选项,这将禁用严格检查,这可能有助于您的用例。
只需要对 jolokia-access.xml 文件进行更改即可编辑 cors :
<allow-origin>*://*</allow-origin>
更多相关信息您可以参考:https://medium.com/@hasnat.saeed/setup-activemq-artemis-on-ubuntu-18-04-76bb4975308b