这是从“如何从外部访问 docker 中的 JMX 接口? ”开始的,其中谈到了设置未加密的 JMX 连接。
我可以使用其中一个RMI
或JMXMP
哪个Glassfish
使用。
有一组 JVM 选项是必需的,我正在寻找使用 SSL 设置 JMX 所需的更改:
com.sun.management.jmxremote=true
com.sun.management.jmxremote.local.only=false
com.sun.management.jmxremote.ssl=true
com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.port=12345
com.sun.management.jmxremote.rmi.port=12346
java.rmi.server.hostname=10.11.12.176
com.sun.management.jmxremote.access.file=/.secure/jmxremote.access
com.sun.management.jmxremote.password.file=/.secure/jmxremote.pass
com.sun.management.jmxremote.login.config=ldap-ad-config
java.net.preferIPv4Stack=true
com.sun.management.jmxremote.ssl.config.file=/.secure/jmxremotessl.properties
javax.net.ssl.keyStore=/config/app.jks
javax.net.ssl.keyStorePassword=teabag
javax.net.ssl.trustStore=/config/cacerts
javax.net.ssl.trustStorePassword=milk
问题是一样的:
java.rmi.ConnectException: Connection refused to host: 172.0.0.85; nested exception is
java.net.ConnectException: Operation timed out
该 IP 地址是 docker 容器的内部 IP 地址。我认为尽管有java.rmi.server.hostname
解决方案,但这种情况正在发生,因为它在 SSL 上。
我尝试使用 nginx 将 SSL 反向代理为非 SSL,但失败并出现错误
java.rmi.ConnectIOException: non-JRMP server at remote endpoint
所以我想我应该在 nginx 中转发额外的标头。
我现在正在尝试设置 JMXMP,但有关如何设置的文档非常薄。有一个 Spring 实现和一个 Glassfish 实现,但还没有可找到的文档(到目前为止)——所以我添加了 glassfish 标记。