Nginx添加win系统服务

Nginx 原生并不支持直接作为 Windows 服务运行,它只是一个普通的可执行程序。要实现开机自启并作为后台服务稳定运行,最成熟且常用的方法是使用第三方工具 ‌WinSW (Windows Service Wrapper)‌ 将其包装成 Windows 服务。

以下是具体操作步骤:

第一步:准备文件
下载 WinSW‌:
从 GitHub 下载 WinSW 的最新 release 版本(通常是一个 .exe文件和一个 .xml配置文件模板)。
放置文件‌:
将下载的 winsw.exe 和 winsw.xml 复制到你的 Nginx 安装根目录下(例如 D:\nginx)。
重命名文件‌:
为了管理方便,建议将它们重命名为与 Nginx 相关的名字,例如:
winsw.exe -> nginx-service.exe
winsw.xml -> nginx-service.xml
第二步:配置 XML 文件

编辑 nginx-service.xml 文件,内容如下(请根据你的实际路径修改):

xml
<service>
  <id>nginx</id>
  <name>Nginx Service</name>
  <description>High Performance Nginx Service</description>
  <logpath>D:\nginx\logs</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  <executable>D:\nginx\nginx.exe</executable>
  <startarguments>-p D:\nginx</startarguments>
  <stopexecutable>D:\nginx\nginx.exe</stopexecutable>
  <stoparguments>-p D:\nginx -s stop</stoparguments>
</service>


注意:路径中不要包含中文或空格,建议使用正斜杠 / 或双反斜杠 \\。

第三步:安装并启动服务

以‌管理员身份‌打开 PowerShell 或 CMD,进入 Nginx 目录,执行以下命令:

安装服务‌:

powershell
.\nginx-service.exe install


如果提示成功,你可以在 Windows 的“服务”管理器(运行 services.msc)中看到名为 "Nginx Service" 的服务。

启动服务‌:

powershell
.\nginx-service.exe start


或者直接在“服务”管理器中右键点击该服务选择“启动”。

设置开机自启‌:
在“服务”管理器中,双击该服务,将“启动类型”改为 ‌“自动”‌。这样每次开机 Nginx 就会自动作为后台服务运行,无需任何黑窗口。

常用管理命令
卸载服务‌:.\nginx-service.exe uninstall
重启服务‌:.\nginx-service.exe restart
查看状态‌:.\nginx-service.exe status
替代方案:使用 NSSM

如果你觉得 WinSW 配置稍显复杂,也可以使用 ‌NSSM (Non-Sucking Service Manager)‌,它是一个更轻量级的工具:

下载 nssm.exe。
以管理员身份运行:
powershell
nssm install NginxService

在弹出的 GUI 界面中:
Application‌ 标签页:
Path: D:\nginx\nginx.exe
Startup directory: D:\nginx
Arguments: -p D:\nginx
Shutdown‌ 标签页:
勾选 "Console application",并在 Stop method 中选择 "Terminate process tree" 或配置停止命令 nginx.exe -s stop。
点击 "Install service" 即可。

这两种方法都能完美解决 Nginx 在 Windows 下无法原生作为服务运行的问题,推荐优先使用 WinSW,因为它与 Java 生态兼容性好且维护活跃。

posted @ 2026-06-26 01:59  TheDigitalArtist  阅读(28)  评论(0)    收藏  举报
Just a Free Weblog With Cnblogs
点击“进入”或等待自动跳转到首页
5秒后自动进入
会话跳过
本标签页内已进入后不再弹出