必须同时完成hosts映射与Nginx虚拟主机配置:在C:\Windows\System32\drivers\etc\hosts中添加127.0.0.1 a.test.com和127.0.0.1 b.test.com,执行ipconfig /flushdns;再于Nginx conf/vhost下创建a_com.conf和b_com.conf,分别配置静态目录与代理至3000端口,并在nginx.conf的http块中加入include vhost/*.conf,最后stop+启动Nginx生效。

要在Windows本地用Nginx实现多个域名(如 a.test.com、b.test.com)分别指向不同项目目录或端口,必须同时完成hosts映射与Nginx虚拟主机配置,缺一不可。
修改系统hosts文件添加本地域名映射
打开 C:\Windows\System32\drivers\etc\hosts 文件(需以管理员身份运行记事本或其他编辑器),在末尾新增两行:
127.0.0.1 a.test.com
127.0.0.1 b.test.com
保存后,在CMD中执行 ipconfig /flushdns 刷新DNS缓存,否则浏览器仍会走公网DNS查询,新域名无法解析到本机。
创建独立的server配置文件
进入 Nginx 安装目录下的 conf 文件夹,新建子目录 vhost(若不存在);
在 vhost 目录下新建两个文件:a_com.conf 和 b_com.conf;
这两个文件将分别定义 a.test.com 与 b.test.com 的服务行为,避免直接修改主 nginx.conf 导致结构混乱。
配置a.test.com指向本地静态目录
编辑 vhost\a_com.conf,写入以下内容:
server {
listen 80;
server_name a.test.com;
root D:/projects/a-site/;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
注意:root 路径末尾不加斜杠,且 D:/projects/a-site/ 必须真实存在并包含 index.html,否则访问时返回 403 或 404。
配置b.test.com代理到本地开发端口
编辑 vhost\b_com.conf,写入以下内容:
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
server {
listen 80;
server_name b.test.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这一步把所有对 b.test.com 的请求转发给本机 3000 端口的服务(如 React/Vite 开发服务器),proxy_pass 后不能带路径尾部斜杠,否则可能导致路由错乱。
启用vhost配置加载
打开 conf/nginx.conf,找到 http 块末尾,确认包含这一行:
include vhost/*.conf;
如果该行被注释(前面有 #),请删除 # 取消注释;如果没有,请手动添加在 http 块的最后一个 } 之前;
这行指令让 Nginx 自动加载 vhost 目录下所有 .conf 文件,是实现多域名配置解耦的关键。
重启Nginx使配置生效
打开命令提示符(管理员权限非必需,但确保无其他 nginx 进程占用端口),进入 Nginx 安装目录,依次执行:
D:\nginx\nginx -s stop → D:\nginx\nginx
不要用 nginx -s reload,它在 Windows 下偶尔不重载 server_name 变更,stop + 启动更可靠;
启动后访问 http://a.test.com 和 http://b.test.com,应分别看到静态页面和代理过来的开发服务页面。










