Windows 环境下 Nginx 与 MQTT 安装配置完整教程
很多做物联网开发、智能家居调试或者本地消息推送的朋友,都会遇到一个实际需求:在 Windows 电脑上同时跑 Nginx 和 MQTT 服务。Nginx 负责反向代理、负载均衡和 WebSocket 转发,MQTT 则作为轻量消息中间件处理设备上报和订阅。Windows 虽然不是服务器首选系统,但开发调试阶段用起来最方便。下面从零开始,手把手教你把 Nginx 和 MQTT(以主流的 Mosquitto 为例)装好并跑通,全程适合电脑小白,按步骤操作即可。
一、安装前的准备工作
先确认你的电脑环境。本教程基于 Windows 10/11 64 位系统,管理员权限操作更稳妥。关闭杀毒软件的实时防护(安装完成后可再打开),避免误拦服务。
需要准备的文件:
- Nginx 官方 Windows 版(推荐 1.24 或更高稳定版)
- Eclipse Mosquitto Windows 安装包(推荐 2.0.x 版本)
- 可选:Notepad++ 或 VS Code,方便改配置文件
下载地址直接去官网搜索对应名字即可,注意选 Windows 平台包。Mosquitto 安装包自带服务注册,Nginx 则是绿色解压版,两者都不用复杂编译。
磁盘空间预留至少 200MB,端口冲突提前检查:Nginx 默认 80/443,Mosquitto 默认 1883(TCP)和 9001(WebSocket)。如果端口被占用,后面配置时改掉就行。
二、Nginx 在 Windows 上的安装与启动
Nginx for Windows 是解压即用,没有传统安装向导。
-
下载 zip 包后,解压到纯英文路径,例如
D:\nginx。路径里不要有中文或空格,否则容易出奇怪问题。 -
进入解压目录,你会看到
nginx.exe、conf文件夹、logs文件夹等。 -
用管理员身份打开命令提示符(CMD)或 PowerShell,切换到 Nginx 目录:
cd /d D:\nginx -
启动命令:
start nginx启动成功后,任务管理器里会出现两个 nginx 进程(一个 master,一个 worker)。浏览器访问
http://localhost,如果出现 Welcome to nginx 页面,说明安装成功。 -
常用管理命令(都在 Nginx 目录下执行):
- 停止:
nginx -s stop - 优雅退出:
nginx -s quit - 重新加载配置:
nginx -s reload - 查看版本:
nginx -v
- 停止:
配置文件在 conf/nginx.conf。初次使用建议先备份一份。Windows 下 Nginx 默认单 worker,开发足够用。如果需要开机自启,可以把 nginx.exe 做成 Windows 服务(用 nssm 工具注册即可,免费且稳定)。
三、MQTT 服务(Mosquitto)在 Windows 的安装
Mosquitto 是目前最常用的开源 MQTT Broker,Windows 有官方安装程序。
- 下载
.exe安装包,双击运行。安装过程一路下一步,建议勾选“安装为 Windows 服务”和“安装客户端工具”。 - 默认安装路径通常是
C:\Program Files\mosquitto。 - 安装完成后,打开服务管理器(
Win + R输入services.msc),找到 “Mosquitto Broker”,确认状态为“正在运行”。如果没有自动启动,右键设为自动,并启动一次。 - 测试是否正常:打开 CMD,进入 Mosquitto 目录,执行:
mosquitto_sub -h localhost -t test -v另开一个 CMD 窗口执行:
mosquitto_pub -h localhost -t test -m "hello mqtt"如果订阅端立刻收到 “hello mqtt”,说明 MQTT 服务已经正常工作。
默认配置文件是 mosquitto.conf(在安装目录)。如果找不到,可以新建一个,内容最简版如下:
listener 1883
allow_anonymous true
然后重启服务生效。生产环境务必关掉匿名登录,加上用户名密码或证书,开发阶段先这样最省事。
WebSocket 支持也很简单,在配置文件里加两行:
listener 9001
protocol websockets
重启服务后,9001 端口就能给浏览器端 MQTT.js 使用。
四、让 Nginx 与 MQTT 配合工作(反向代理 WebSocket)
很多场景需要通过 Nginx 把 MQTT 的 WebSocket 端口暴露出去,或者做 SSL 终结。下面给出一段可直接用的 Nginx 配置片段。
打开 nginx.conf,在 http 块里添加:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8080;
server_name localhost;
location /mqtt {
proxy_pass http://127.0.0.1:9001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
保存后执行 nginx -s reload。此时客户端连接地址变成 ws://你的IP:8080/mqtt,Nginx 会把请求透明转发给 Mosquitto 的 9001 端口。
如果要上 HTTPS,把 listen 改成 443,加上 ssl_certificate 和 ssl_certificate_key 即可。证书可以用免费的自签名,或者正式域名证书。
五、完整验证与联调步骤
- 确认 Mosquitto 1883 和 9001 端口都在监听:
netstat -ano | findstr "1883 9001" - 确认 Nginx 80 或你自定义的端口正常。
- 用 MQTT 客户端工具(MQTTX 或 MQTT.fx)连接:
- TCP 直连:主机 localhost,端口 1883
- WebSocket 经 Nginx:主机 localhost,端口 8080,路径 /mqtt
- 发布一条消息,订阅端能收到即成功。
如果浏览器控制台报 WebSocket 连接失败,多半是 Nginx 的 Upgrade 头没配对,或者防火墙拦了端口。Windows 防火墙记得给 Nginx 和 Mosquitto 放行对应端口。
六、常见问题与避坑技巧
- 启动 Nginx 提示端口被占用:用
netstat -ano | findstr :80查出 PID,任务管理器结束对应进程,或者改 nginx.conf 的 listen 端口。 - Mosquitto 服务起不来:看安装目录下的 log 文件,常见原因是配置文件语法错误或端口冲突。
- 中文路径导致 Nginx 崩溃:务必用纯英文路径。
- 开机后服务没自动起来:Mosquitto 检查服务属性;Nginx 用 nssm 注册成服务,启动类型设为自动。
- 性能调优小建议:Windows 开发机不用追求高并发。Mosquitto 可适当调大 max_connections,Nginx worker_connections 设为 1024 足够日常调试。
- 安全提醒:公网暴露时一定关掉 allow_anonymous,启用密码或 ACL,Nginx 前面最好再加一层 IP 白名单。
数据备份也很简单:把 Nginx 的 conf 目录和 Mosquitto 的 conf + data 目录定期复制一份即可。需要迁移到 Linux 服务器时,配置几乎不用改,直接拷过去。
按照以上步骤,从下载到联调通常半小时内就能完成。装好后你就可以安心写设备端代码、调试前端订阅页面,不用再为环境问题分心。后续如果要加 SSL、集群或者对接 Docker,在这个基础上扩展就很顺畅。

还没有评论,来说两句吧...