Skip to main content
Benny的老巢 Logo
Overview

在Windows上搭建Nginx局域网代理服务器:从零开始的实战指南

January 4, 2026
2 min read

最近在本地开发时遇到了一个常见需求:需要让局域网内的其他设备访问我的开发服务器,同时还要处理多个后端接口的转发问题。虽然市面上有很多现成的解决方案,但Nginx凭借其轻量级和高性能的特点,依然是我的首选。今天就来分享一下在Windows环境下配置Nginx的完整过程。

为什么选择Nginx?

说实话,刚开始我也想过用其他方案,但最终还是选择了Nginx,原因很简单:

  1. 轻量级:Windows版本的Nginx解压即用,不需要复杂的安装过程
  2. 配置灵活:无论是路径转发还是域名转发,都能轻松搞定
  3. 性能稳定:即使在高并发场景下也能保持稳定运行
  4. 学习成本低:配置文件结构清晰,文档丰富

第一步:下载和安装

安装过程其实很简单,但有几个细节需要注意。

首先,从Nginx官网下载Windows版本的压缩包。建议选择稳定版(stable version),这样能避免一些潜在的bug。

下载完成后,解压到任意目录。我个人习惯放在 C:\nginx,这样路径短,方便后续操作。

启动Nginx有两种方式:

  • 方式一:直接双击 nginx.exe,这种方式最简单,但缺点是看不到启动日志
  • 方式二:打开命令行,进入Nginx目录,执行 start nginx,推荐这种方式

启动后,在浏览器访问 http://localhost,如果看到Nginx欢迎页面,恭喜你,第一步成功了!

第二步:让局域网设备也能访问

默认情况下,Nginx只监听本地回环地址(127.0.0.1),这意味着只有本机能访问。要让局域网内的其他设备访问,需要修改配置。

打开 conf/nginx.conf 文件,找到 server 块,修改 listen 指令:

server {
listen 80; # 监听所有网络接口的80端口
# 或者更明确地写成:listen 0.0.0.0:80;
server_name localhost;
# ... 其他配置 ...
}

修改完成后,执行 nginx -s reload 重启Nginx让配置生效。

这时候,局域网内的其他设备应该可以通过你的电脑IP访问了。比如你的局域网IP是 192.168.1.100,那么访问 http://192.168.1.100 就能看到Nginx欢迎页面。

第三步:配置接口转发

这部分是整个配置的核心,也是最容易出错的地方。我根据自己的使用场景,总结了几种常见的转发方式。

场景一:根据路径转发到不同服务

这是最常见的使用场景,比如前端请求 /api/ 转到后端API服务,请求 /admin/ 转到管理后台服务。

location ^~ /api/ {
proxy_pass http://127.0.0.1:8080/; # 转发到本地8080端口
}
location ^~ /admin/ {
proxy_pass http://127.0.0.1:3000/; # 转发到本地3000端口
}

这里有个细节需要注意:proxy_pass 后面的地址如果以 / 结尾,Nginx会把匹配到的 /api/ 部分替换掉。比如请求 /api/users 会被转发到 http://127.0.0.1:8080/users,而不是 http://127.0.0.1:8080/api/users

场景二:根据域名转发到不同服务

如果你有多个域名,可以配置多个 server 块:

# 第一个站点
server {
listen 80;
server_name site1.local;
location / {
proxy_pass http://127.0.0.1:8001;
}
}
# 第二个站点
server {
listen 80;
server_name site2.local;
location / {
proxy_pass http://127.0.0.1:8002;
}
}

这种方式需要在本地hosts文件中添加域名解析,或者配置DNS服务器。

场景三:使用upstream模块(推荐用于复杂场景)

如果你的后端服务有多个实例,或者需要更灵活的管理,可以使用 upstream 模块:

upstream backend_server {
server 127.0.0.1:8080;
# 如果有多个实例,可以继续添加
# server 127.0.0.1:8081;
# server 127.0.0.1:8082;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend_server/;
}
}

这种方式的好处是,如果后端服务地址发生变化,只需要修改 upstream 配置,不需要改动 location 部分。

第四步:配置防火墙规则

这是很多人容易忽略的一步。如果你的Windows防火墙是开启的,即使Nginx配置正确,局域网内的设备也无法访问。

有两种方式添加防火墙规则:

方式一:通过控制面板手动添加

  1. 打开”Windows Defender 防火墙”
  2. 点击”高级设置”
  3. 选择”入站规则” → “新建规则”
  4. 选择”端口” → “TCP” → 特定本地端口(输入80)
  5. 选择”允许连接”
  6. 根据需要选择应用场景(域、专用、公用)
  7. 给规则起个名字,比如”Allow Nginx HTTP”

方式二:通过PowerShell命令(推荐)

以管理员身份打开PowerShell,执行:

Terminal window
New-NetFirewallRule -DisplayName "Allow Nginx HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow

一行命令搞定,方便快捷。

第五步:测试和验证

配置完成后,需要测试一下是否真的生效了。

在局域网内的另一台设备上,打开浏览器,访问:

  • http://[你的WindowsIP地址]:80 - 应该能看到Nginx欢迎页面
  • http://[你的WindowsIP地址]/api/ - 应该能访问到你的API服务

如果访问不了,不要慌,按照下面的步骤排查:

  1. 检查Nginx配置语法:执行 nginx -t,确保配置文件没有语法错误
  2. 查看Nginx日志:打开 logs/error.loglogs/access.log,看看有没有错误信息
  3. 检查防火墙:确认防火墙规则已经生效
  4. 检查网络连接:确保局域网内的设备能够互相ping通

一些实用技巧

传递真实IP信息

默认情况下,后端服务接收到的客户端IP是Nginx的IP(127.0.0.1),而不是真实客户端IP。如果需要获取真实IP,可以在 location 块中添加:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

路径匹配优先级

Nginx的 location 匹配有优先级,从高到低依次是:

  1. = 精确匹配
  2. ^~ 前缀匹配
  3. ~~* 正则匹配
  4. 前缀匹配

配置时要注意顺序,避免匹配错误。

代理地址末尾的斜杠

这是个坑,很多人在这里踩过。proxy_pass 后面的地址末尾加不加斜杠,行为完全不同:

  • 有斜杠:proxy_pass http://127.0.0.1:8080/; - 会替换掉匹配的路径
  • 无斜杠:proxy_pass http://127.0.0.1:8080; - 会保留原始路径

根据你的实际需求选择合适的方式。

总结

通过以上步骤,你应该能够在Windows上成功搭建一个Nginx局域网代理服务器了。整个配置过程虽然看起来步骤不少,但实际操作下来,熟练之后几分钟就能搞定。

Nginx的强大之处在于它的灵活性和可扩展性,今天介绍的只是基础配置。后续还可以根据需要添加HTTPS支持、负载均衡、缓存等功能。