Nginx 在 MacOS 上的自动启动设置

在 MacOS 上通过 brew 安装的 nginx 默认安装在 /usr/local/Cellar/nginx ,通过 brew 安装的时候自动生成了 homebrew.mxcl.nginx.plist 这个文件 将该文件拷贝到 /Library/LaunchDaemons 或者在该文件夹建立 homebrew.mxcl.nginx.plist 这个文件的软连接(MacOS 的访达右键菜单里称为“替身”) 该文件是其实是 XML 文本,其内容是:

<?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>homebrew.mxcl.nginx</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/nginx</string>
        <string>-g</string>
        <string>daemon off;</string>
    </array>
    <key>WorkingDirectory</key>
    <string>/usr/local</string>
  </dict>
</plist>

然后在终端执行命令行

sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

执行上述命令可能会被提示没有权限,将 /Library/LaunchDaemons/homebrew.mxcl.nginx.plist 这个文件的拥有者变更为 root 即可。

sudo chown root homebrew.mxcl.nginx.plist

之后重启 MacOs 电脑后,Nginx 就会自动启动并运行了

注意事项

对于在 Nginx 内配置了反向代理的虚拟主机,可能由于反向代理失败而导致 nginx 自动启动失败,尽管此时使用命令

sudo brew services list

查看到的服务已经成功启动,但是实际上 80 端口的http://localhost/仍然是无法访问的。

只有在登录后重启该服务才可行

sudo brew services restart nginx