Windows上Nginx开机自启需先确保基础运行正常,再用WinSW将其注册为系统服务:下载WinSW-x64.exe重命名为nginx-service.exe,与nginx.exe同目录;编写nginx-service.xml配置executable、logpath及-p启动参数;以管理员身份执行install命令,并在services.msc中设为自动(延迟启动)。

Windows上Nginx每次重启都要手动双击或敲命令,开发环境一断电就掉服务,前端联调全卡住——这不是配置没到位,而是它根本没被系统真正“认领”为服务。
确认Nginx基础运行状态
打开CMD,cd到你的Nginx安装目录(例如 C:\nginx),执行 nginx -t。如果提示 nginx: the configuration file C:\nginx\conf\nginx.conf syntax is ok,说明配置无硬性错误;若报错,先别往下走,否则服务注册后启动必失败。
接着执行 start nginx,再用 tasklist /fi "imagename eq nginx.exe" 查看进程是否存在。如果看不到 nginx.exe,说明当前路径下缺少 VC++ 2015–2022 运行库 或目录含中文/空格——这两项任一不满足,后续所有服务注册都会静默失败。
下载并准备WinSW服务包装器
访问 WinSW 官方 GitHub Releases 页面,下载最新版 WinSW-x64.exe(64位系统必须用此版本,32位极少见,勿混用)。
将下载的文件重命名为 nginx-service.exe,然后复制进你的 Nginx 根目录(如 C:\nginx)。这名字不能改,WinSW 会严格按可执行文件名匹配同名 XML 配置文件。
注意:不要放在桌面或用户文档目录下,必须与 nginx.exe 在同一级目录,否则服务启动时找不到主程序,日志里只显示“Failed to start process”且无进一步线索。
编写nginx-service.xml配置文件
在 C:\nginx 目录下新建纯文本文件,命名为 nginx-service.xml(扩展名必须是 .xml,大小写敏感)。
用记事本或 VS Code 粘贴以下内容,重点修改 <executable></executable> 和 <logpath></logpath> 两处为你实际的绝对路径(斜杠用正向 /,不要用反斜杠 \):
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
其中 -p C:/nginx 是关键:它强制 nginx 使用你指定的配置路径,避免因 Windows 用户权限导致读不到 conf/nginx.conf;漏掉这一项,服务可能启动成功但实际加载的是默认内存配置,反向代理规则全失效。
以管理员身份注册并启用Windows服务
第一步:右键「开始」→「Windows Terminal(管理员)」或「命令提示符(管理员)」,执行:
cd C:\nginx → nginx-service.exe install
第二步:按 Win+R 输入 services.msc 回车,找到名为 nginx 的服务,双击打开属性。
第三步:在「常规」选项卡中,把「启动类型」改为「自动(延迟启动)」——选「自动」也行,但「延迟启动」能避开系统刚开机时磁盘IO高峰,降低服务启动超时概率。
第四步:点击「应用」→「启动」按钮。此时若弹出“服务已启动成功”,说明注册完成;若报错“服务未响应控制功能”,请立即去 C:\nginx\logs\nginx-service.wrapper.log 查最后一行,90%是路径写错或权限不足。
第五步:重启电脑,待桌面完全加载后,打开浏览器访问 http://localhost。看到 Welcome to nginx! 页面,即表示开机自启已生效。

















