Windows下用Nginx做反向代理需正确配置upstream模块和proxy_pass指令:先确认Nginx正常运行,再在http块中定义upstream后端组,接着在server块中通过proxy_pass引用并设置请求头,最后重载配置验证。

在 Windows 下用 Nginx 做反向代理,核心就是正确配置 upstream 模块和 proxy_pass 指令。它不依赖额外编译,开箱即用,关键是路径、端口、语法不能出错。
一、确认 Nginx 已正常运行
下载官方 Windows 版(推荐 nginx.org 的 zip 包),解压后双击 nginx.exe 启动。打开浏览器访问 http://localhost,看到 “Welcome to nginx!” 页面说明基础服务已就绪。
若启动失败,常见原因有:
- 端口被占用(默认 80)→ 修改
conf/nginx.conf中的listen 80 - 中文路径或空格 → 解压路径避免含中文、空格、特殊符号
- 防火墙拦截 → 临时关闭测试,或放行对应端口
二、配置 upstream 定义后端服务组
在 conf/nginx.conf 的 http 块内(通常在 server 块上方)添加 upstream 块,例如:
upstream backend_api {
server 127.0.0.1:3000;
server 127.0.0.1:3001 backup;
}
说明:
-
backend_api是自定义名称,后续在proxy_pass中引用 - 支持多个
server,可加weight=2控制权重,max_fails=3 fail_timeout=30s设置健康检查 -
backup表示仅当其他节点全不可用时才启用 - Windows 下不支持 Unix socket(如
unix:/path/to.sock),只用IP:端口
三、在 server 块中启用反向代理
修改默认 server 块(或新增一个),将请求转发到 upstream:
server {
listen 8080;
server_name localhost;
location /api/ {
proxy_pass http://backend_api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
root html;
index index.html;
}
}
关键点:
-
proxy_pass后必须跟http://协议头 + upstream 名称(不能写成http://127.0.0.1:3000,否则 upstream 失效) - 注意末尾斜杠:
proxy_pass http://backend_api/(带/)会剥离/api/再转发;不带则原样传递 -
proxy_set_header确保后端能获取真实客户端 IP 和域名
四、验证与排错
保存配置后,在 Nginx 根目录执行命令重载配置:
nginx -s reload
如果报错,用以下命令检查语法:
nginx -t
常见问题:
- 502 Bad Gateway:后端服务未运行,或 upstream 中地址/端口写错
-
404 Not Found:location 路径匹配不到,或
proxy_pass末尾斜杠处理不当 -
连接超时:检查后端是否监听
127.0.0.1(而非localhost或0.0.0.0),某些 Node.js 服务默认只绑本地回环
建议搭配 curl -v http://localhost:8080/api/test 查看响应头和转发链路。










