Windows/Linux/macOS上Nginx实现开机自启全指南

 更新时间:2026年05月12日 08:48:11   作者:Gitrocr  
无论是开发环境还是生产服务器,Nginx作为高性能的Web服务器和反向代理,常常需要7×24小时运行,如果每次电脑或服务器重启后都要手动启动它,既繁琐又容易遗忘,本文将详细讲解在Windows、Linux、macOS三大主流操作系统上,如何将Nginx配置为系统服务,实现开机自动启动

让 Nginx 跟随系统启动,从此告别每次重启电脑后手动敲命令的烦恼。

无论是开发环境还是生产服务器,Nginx 作为高性能的 Web 服务器和反向代理,常常需要 7×24 小时运行。如果每次电脑或服务器重启后都要手动启动它,既繁琐又容易遗忘。本文将详细讲解在 Windows、Linux、macOS 三大主流操作系统上,如何将 Nginx 配置为系统服务,实现开机自动启动。

目录

Windows 系统

  • 方法一:WinSW 注册为系统服务(推荐)
  • 方法二:任务计划程序

Linux 系统

  • 方法一:systemd(通用推荐)
  • 方法二:手动创建 systemd 服务文件(源码编译安装)

macOS 系统

  • 方法一:Homebrew(最简单)
  • 方法二:手动创建 launchd 服务文件

常见问题与故障排查

  • 如何卸载已存在的 Nginx 服务
  • 端口冲突
  • 路径错误
  • 脚本权限不足

Windows 系统

方法一:WinSW 注册为系统服务(推荐)

WinSW 是一个轻量级的开源工具,可以将任何可执行程序包装成 Windows 系统服务。

1. 下载 WinSW
前往 GitHub Releases 下载 WinSW-net4.exe(.NET 4 环境)或最新版。将其放入 Nginx 根目录,并重命名为 nginx-service.exe

2. 创建配置文件
在同目录下新建 nginx-service.xml,写入以下内容(请将路径替换为你的实际路径):

<service>
  <id>nginx</id>
  <name>Nginx Web Server</name>
  <description>Nginx HTTP Server</description>
  <executable>C:\path\to\your\nginx\nginx.exe</executable>
  <logpath>C:\path\to\your\nginx\logs</logpath>
  <startmode>Automatic</startmode>
  <stopexecutable>C:\path\to\your\nginx\nginx.exe</stopexecutable>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>

3. 安装服务
以管理员身份打开命令提示符,进入 Nginx 目录,执行:

nginx-service.exe install

4. 验证
按下 Win + R,输入 services.msc 打开“服务”,找到 Nginx Web Server,确认其“启动类型”为 自动。你也可以右键手动启动一次测试。

方法二:任务计划程序

无需第三方工具,利用 Windows 自带的任务计划程序即可。

按下 Win 键,搜索并打开“任务计划程序”。

右侧点击“创建基本任务”。

  • 名称:Nginx Auto Start
  • 触发器:选择“当计算机启动时
  • 操作:选择“启动程序
  • 程序或脚本:浏览选择 nginx.exe

完成创建后,重启电脑验证。

注意:请确保 Nginx 所在目录路径不包含空格或中文,否则可能导致任务执行失败。

Linux 系统

现代 Linux 发行版(Ubuntu 16.04+、CentOS 7+、Debian 8+ 等)统一使用 systemd 管理服务。

方法一:systemd(通用推荐)

如果你通过包管理器(aptyumdnf)安装 Nginx,systemd 服务文件通常已经自动生成,只需执行以下命令:

# 设置开机自启
sudo systemctl enable nginx
# 立即启动服务
sudo systemctl start nginx

检查状态:

sudo systemctl status nginx

输出中若包含 enabled,则表示开机自启已配置成功。

方法二:手动创建 systemd 服务文件(源码编译安装)

如果你通过源码编译安装 Nginx,需要手动创建服务文件。

1. 创建服务文件

sudo nano /etc/systemd/system/nginx.service

2. 粘贴以下配置(根据你的实际安装路径修改 ExecStart 等参数):

[Unit]
Description=nginx - high performance web server
After=network.target
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

3. 重载并启用服务

sudo systemctl daemon-reload
sudo systemctl enable --now nginx

macOS 系统

macOS 使用 launchd 管理后台服务。

方法一:Homebrew(最简单)

如果你通过 Homebrew 安装了 Nginx,只需一条命令:

brew services start nginx

该命令会自动将 Nginx 配置为开机自启并立即启动。若要停止或重启:

brew services stop nginx
brew services restart nginx

方法二:手动创建 launchd 服务文件

适合不使用 Homebrew 或需要精细控制的场景。

1. 创建 plist 文件

sudo nano /Library/LaunchDaemons/com.nginx.plist

2. 填写配置(修改 Nginx 实际路径):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.nginx</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/nginx/sbin/nginx</string>
        <string>-g</string>
        <string>daemon off;</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

3. 加载并启动

sudo launchctl load /Library/LaunchDaemons/com.nginx.plist
sudo launchctl start com.nginx

常见问题与故障排查

如何卸载已存在的 Nginx 服务

如果你在安装时遇到“服务已存在”的提示,可以按以下方法卸载旧服务(以 Windows 为例,其他系统类似):

方法一:使用 WinSW 的 uninstall 命令
在有 nginx-service.exe 的目录下,以管理员身份运行:

nginx-service.exe uninstall

方法二:使用 sc 命令

sc delete "你的服务名称"

例如 sc delete "Nginx Web Server"

方法三:PowerShell(版本 6+)

Remove-Service -Name "你的服务名称"

方法四:注册表删除(高级)
打开 regedit,导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,找到对应的服务文件夹,右键删除。

端口冲突

Nginx 默认监听 80 端口(HTTP)和 443 端口(HTTPS)。如果这些端口被其他程序(如 Skype、Apache、IIS)占用,Nginx 启动会失败。 排查方法

  • Windows:netstat -ano | findstr :80
  • Linux/macOS:sudo lsof -i :80

找到占用进程后,停止对应程序或修改 Nginx 监听端口。

路径错误

无论是 WinSW 的 XML 配置,还是 systemd/launchd 的脚本中,务必使用 Nginx 的绝对路径。建议路径中不要含有空格或特殊字符。

脚本权限不足(Linux)

如果使用自定义 init 脚本,确保脚本具有可执行权限:

sudo chmod +x /etc/init.d/nginx

对于 systemd 服务文件,通常不需要额外权限,但需要保证 ExecStart 指向的二进制文件可执行。

结语

通过以上任一方法,即可让 Nginx 在系统启动时自动运行。推荐 Windows 用户使用 WinSW,Linux 用户使用 systemd,macOS 用户使用 Homebrew,它们最稳定、最符合各平台的最佳实践。

以上就是Windows/Linux/macOS上Nginx实现开机自启全指南的详细内容,更多关于Windows/Linux/macOS Nginx开机自启的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx服务器高性能优化的配置方法小结

    Nginx服务器高性能优化的配置方法小结

    这篇文章主要介绍了Nginx服务器高性能优化的配置方法小结,包括一些内核参数的优化介绍,需要的朋友可以参考下
    2015-12-12
  • 使用Nginx实现反向代理、配置负载均衡详解

    使用Nginx实现反向代理、配置负载均衡详解

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强,文章详细介绍了Nginx的安装、配置、命令、静态资源部署、反向代理和负载均衡等具体应用
    2026-02-02
  • Nginx中Location配置超详细讲解

    Nginx中Location配置超详细讲解

    最近一直在做location 配置,遇到优先级别问题(如果配置不当可能存在安全隐患哦),下面这篇文章主要给大家介绍了关于Nginx中Location配置的相关资料,需要的朋友可以参考下
    2023-01-01
  • nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

    nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

    这篇文章主要介绍了nginx php-fpm中启用慢日志配置,php-fpm慢日志slowlog设置可以让我们很好的看见哪些php进程速度太慢而导致的网站问题,可以让我们方便的找到问题的所在,需要的朋友可以参考下
    2014-05-05
  • nginx中keepalive配置详解

    nginx中keepalive配置详解

    keepalive是长连接的意思,本文主要介绍了nginx中keepalive配置详解,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • nginx keepalive的具体使用

    nginx keepalive的具体使用

    这篇文章主要介绍了nginx keepalive的具体使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • nginx 配置服务启动的教程详解

    nginx 配置服务启动的教程详解

    本文给大家详细介绍了nginx 配置服务启动的相关知识,非常不错,具有一定的参考借鉴价值,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • 在网关中使用Nginx配置HTTP透明代理案例

    在网关中使用Nginx配置HTTP透明代理案例

    这篇文章主要介绍了在网关中使用Nginx配置HTTP透明代理案例,中间还需要iptables配合,需要的朋友可以参考下
    2014-06-06
  • Nginx平滑升级核心原理与location配置案例详解

    Nginx平滑升级核心原理与location配置案例详解

    Nginx平滑升级指在不中断服务的前提下,为Nginx添加新模块或更新版本,保障业务持续运行,下面通过本文给大家分享基于“为Nginx 1.24.0添加echo-nginx-module模块”的完整平滑升级流程,包含详细操作步骤、命令解释及注意事项,感兴趣的朋友一起看看吧
    2025-10-10
  • nginx缓存及错误页面配置

    nginx缓存及错误页面配置

    这篇文章主要介绍了nginx缓存及错误页面配置的相关资料,需要的朋友可以参考下
    2017-01-01

最新评论