nginx转发mqtt
- docker安装mqtt
docker pull emqx/emqx:v4.0.5 docker run -tid --name emqx -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.5 http://ip:18083
-
云服务器开启相关端口
-
emqx关闭匿名认证,开启username插件
-
使用服务器ip + 18083访问成功
-
使用vscode + rest client插件管理用户,测试成功
-
使用docker安装nginx
docker run -p 80:80 --name my-nginx --restart=always -v /home/mydocker/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/mydocker/mynginx/conf/conf.d:/etc/nginx/conf.d -v /home/mydocker/mynginx/html:/usr/share/nginx/html -v /home/mydocker/mynginx/logs:/var/log/nginx -d nginx
- 创建桥接网络
# 查看docker网桥 docker network ls # 默认情况下有如下3种 NETWORK ID NAME DRIVER SCOPE 9f518686edff bridge bridge local f8fe62505b26 host host local 28f688f90902 none null local # 不是以上3种,则为自定义网桥 # 将加入到自定义网桥的镜像,从自定义网桥中移除 docker network rm docker镜像id # 删除之前自定义的网桥 docker network rm NETWORK_ID # 清理此容器的网络占用 docker network disconnect --force 网络模式 容器名称 docker network disconnect --force bridge containerName # 简查是否还有同名容器占用 docker network inspect 网络模式 docker network inspect bridge # 服务器创建网络 docker network create -d bridge my-bridge # 将nginx添加到网络 docker network connect my-bridge my-nginx # 将mqtt添加到网络 docker network connect my-bridge emqx # 查看nginx的网络 [root@VM-12-15-centos conf.d]# docker inspect 608a3cb87dca | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.4", "IPAddress": "172.17.0.4", "IPAddress": "172.18.0.2", # 查看emqx的网络 [root@VM-12-15-centos conf.d]# docker inspect 235d39c2a8c4 | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.3", "IPAddress": "172.17.0.3", "IPAddress": "172.18.0.4", # 测试 docker exec -it my-nginx ping emqx docker exec -it emqx ping my-nginx # 或则直接进入容器中ping
-
配置nginx并重启
-
关闭云服务上的emqx相关的端口
# 访问该地址会通过nginx转发到emqx的登录页面 http://1xx.xxx.xxx.xxx:80/
-
配置nginx,并重启,转发到用户管理接口
-
在关闭云服务器emqx相关端口的情况下,测试
@hostname = 1xx.xxx.xxx.xxx @port=8081 @contentType=application/json @userName=admin @password=public #############查看已有用户认证数据############## GET http://{{hostname}}:{{port}}/api/v4/auth_username HTTP/1.1 Content-Type: {{contentType}} Authorization: Basic {{userName}}:{{password}} ### 通过nginx转发 GET http://1xx.xxx.xxx.xxx:80/mqtt HTTP/1.1 Content-Type: {{contentType}} Authorization: Basic {{userName}}:{{password}}
- 测试成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)