Nginx 反向代理和 mosquitto docker 个容器
Nginx reverse proxy and mosquitto docker containers
是否可以使用 jwilder/nginx-proxy to route mqtt messages to eclipse-mosquitto 容器?
因此客户端可以在不同的子域下但在同一端口下访问不同的代理:
broker1.example.com 端口 1883
broker2.example.com 在端口 1883 上
没有
正如 Brits 在评论中所说,您不能使用本机 MQTT 进行基于主机名的代理。基于主机名的代理仅适用于 HTTP,因为协议在每个请求中明确包含主机名(Host
HTTP header),MQTT 不包含任何信息来识别客户端尝试连接的主机名协议。
如果使用基于 TLS 的 MQTT 就可以做到这一点,因为主机名包含在 TLS 握手中,这样服务器就知道要向客户端提供哪个证书。有关如何设置 Nginx 以使用 TLS SNI header 将 MQTT 代理到不同后端的详细信息,请参阅我的博客 here and with Traefik here.
这两个指南都是关于如何直接编辑设置文件,而不是如何将其与 jwilder/nginx-proxy 一起使用。自从我使用该代理配置以来已经有一段时间了,但我认为它不支持自动设置 TCP 流代理而不是 HTTP 代理。
是否可以使用 jwilder/nginx-proxy to route mqtt messages to eclipse-mosquitto 容器?
因此客户端可以在不同的子域下但在同一端口下访问不同的代理:
broker1.example.com 端口 1883
broker2.example.com 在端口 1883 上
没有
正如 Brits 在评论中所说,您不能使用本机 MQTT 进行基于主机名的代理。基于主机名的代理仅适用于 HTTP,因为协议在每个请求中明确包含主机名(Host
HTTP header),MQTT 不包含任何信息来识别客户端尝试连接的主机名协议。
如果使用基于 TLS 的 MQTT 就可以做到这一点,因为主机名包含在 TLS 握手中,这样服务器就知道要向客户端提供哪个证书。有关如何设置 Nginx 以使用 TLS SNI header 将 MQTT 代理到不同后端的详细信息,请参阅我的博客 here and with Traefik here.
这两个指南都是关于如何直接编辑设置文件,而不是如何将其与 jwilder/nginx-proxy 一起使用。自从我使用该代理配置以来已经有一段时间了,但我认为它不支持自动设置 TCP 流代理而不是 HTTP 代理。