我正在使用emqx作为我的传感器网络的mqtt代理。这是我想要的配置。我希望允许内部和外部连接有两个不同的侦听器。
监听器1外部: 0.0.0.0:8883不允许匿名连接,此侦听器用于我的VPC之外的传感器
侦听器2内部: 127.0.0.1:11883允许匿名连接,此侦听器用于运行在同一台计算机(localhost)上的几个服务
这是我的配置文件(相关选项)
##--------------------------------------------------------------------
## Authentication/Access Control
##--------------------------------------------------------------------
allow_anonymous = false
##--------------------------------------------------------------------
## Internal Zone
##--------------------------------------------------------------------
zone.internal.allow_anonymous = true
##--------------------------------------------------------------------
## Listeners
##--------------------------------------------------------------------
listener.tcp.external = 0.0.0.0:8883
listener.tcp.external.zone = external
##--------------------------------------------------------------------
## Internal TCP Listener for MQTT Protocol
##--------------------------------------------------------------------
listener.tcp.internal = 127.0.0.1:11883
listener.tcp.internal.zone = internal侦听器1在我的自定义身份验证器API中非常好地工作。
但是侦听器2(内部侦听器)并不像预期的那样工作。它不允许匿名连接,并向我的API身份验证器发送auth请求。
我做错什么了吗?
(谢谢你的帮助:)
发布于 2020-02-02 10:52:27
在讨论这个问题的基础上回答问题https://github.com/emqx/emqx/issues/3225
问题是HTTP插件似乎没有遵守区域设置。为了达到内部区域的配置,我们必须使用忽略文档中提到的HTTP。。
身份验证成功HTTP 现状代码: 200 忽略此认证HTTP 状态代码: 200正文:忽略 身份验证失败HTTP 地位代码: 200以外
一旦解决了这个问题,下面的EMQX配置就可以工作了。
# Global
allow_anonymous = false
# external
zone.external.allow_anonymous = false
listener.tcp.external = 0.0.0.0:1883
# internal
zone.internal.allow_anonymous = true
listener.tcp.internal = 127.0.0.1:11883此设置确保MQTT客户端能够:
在我看来,最好设置内部区域以允许匿名连接本身绕过HTTP auth。
发布于 2020-01-29 07:30:25
昨天,我在emqX github存储库上创建了一个问题。也许你想遵循这个问题的解决方案。https://github.com/emqx/emqx/issues/3225
答案是否定的,但我也在为同样的问题而挣扎。我希望这能使我们找到解决办法。
https://stackoverflow.com/questions/59933015
复制相似问题