macOS安装nginx方案梳理

在 macOS 上搭建 Nginx,最推荐用 Homebrew + brew services 管理(一键启停+开机自启),搭配 Nginx UI 做网页控制面板;也可原生用 launchd 实现自启,或用官方命令直接控制。下面分方案给出完整操作。


一、方案总览(按推荐度)

  1. Homebrew + brew services(首选):命令行极简管理、自动配置 launchd 开机自启、无额外依赖。
  2. Homebrew + launchd(原生自启):手动写 plist,适合精细化权限/启停控制。
  3. Nginx UI(网页控制界面):Web 面板一键启停、配置编辑、日志查看,兼容 brew 安装的 Nginx。
  4. 官方二进制命令(纯命令行):无需 brew,直接调用 nginx 二进制,适合绿色/便携部署。

二、方案1:Homebrew + brew services(最简,推荐)

1. 安装 Nginx

1
2
3
4
5
6
7
8
# 安装(自动处理依赖:openssl、pcre 等)
brew install nginx

# 验证安装
nginx -v
# Intel 配置路径:/usr/local/etc/nginx/nginx.conf
# Apple Silicon 配置路径:/opt/homebrew/etc/nginx/nginx.conf
# 网站根目录:/usr/local/var/www 或 /opt/homebrew/var/www

2. 命令行控制(一键启停+自启)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动并设置开机自启(核心命令!)
brew services start nginx

# 查看状态(显示 started 即正常)
brew services list | grep nginx

# 停止服务
brew services stop nginx

# 重启服务(重载配置)
brew services restart nginx

# 取消开机自启(仅停止自启,不停止当前进程)
brew services disable nginx

3. 验证运行

  • 默认端口 8080,浏览器访问:http://localhost:8080,看到 “Welcome to nginx!” 即成功。
  • 如需改 80 端口:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 停止自带 Apache(占用 80)
    sudo apachectl stop

    # 编辑配置(Intel 用 /usr/local/etc/nginx/nginx.conf)
    nano /opt/homebrew/etc/nginx/nginx.conf
    # 把 listen 8080 改为 listen 80,保存退出

    # 重载配置
    sudo nginx -s reload

4. 开机自启原理

brew services 自动在 ~/Library/LaunchAgents/ 生成 homebrew.mxcl.nginx.plist,并注册到 launchd,开机自动加载。


三、方案2:Homebrew + launchd(原生自启,适合进阶)

1. 准备 plist 文件

创建 /Library/LaunchDaemons/com.nginx.server.plist(系统级自启,需 root):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/nginx/bin/nginx</string>
<string>-g</string>
<string>daemon off;</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/nginx/error.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/nginx/access.log</string>
</dict>
</plist>

2. 赋权并加载服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 赋权(root 所有,644 权限,防止篡改)
sudo chown root:wheel /Library/LaunchDaemons/com.nginx.server.plist
sudo chmod 644 /Library/LaunchDaemons/com.nginx.server.plist

# 加载并启动
sudo launchctl load -w /Library/LaunchDaemons/com.nginx.server.plist

# 查看是否生效
launchctl list | grep nginx

# 停止服务
sudo launchctl stop com.nginx.server

# 取消自启
sudo launchctl unload -w /Library/LaunchDaemons/com.nginx.server.plist

四、方案3:Nginx UI(网页控制面板,可视化管理)

1. 安装 Nginx UI(需先通过 brew 安装 Nginx)

1
2
3
4
5
6
7
8
# 添加仓库并安装
brew install 0xjacky/tools/nginx-ui

# 启动 Nginx UI(默认端口 9000)
brew services start nginx-ui

# 查看状态
brew services list | grep nginx-ui

2. 访问与配置

  • 浏览器打开:http://localhost:9000
  • 默认账号密码:admin / admin(首次登录强制修改)。
  • 面板功能:
    • ✅ 一键启停/重启 Nginx
    • ✅ 在线编辑 nginx 配置(语法高亮+错误检测)
    • ✅ 实时查看访问/错误日志
    • ✅ 监控 CPU、内存、连接数。

3. 关联本地 Nginx

登录后在「设置」页填写:

  • Nginx 路径:/usr/local/opt/nginx/bin/nginx(Intel)或 /opt/homebrew/opt/nginx/bin/nginx(Apple Silicon)
  • 配置文件路径:/usr/local/etc/nginx/nginx.conf(对应芯片路径)
  • 保存后即可通过面板管理本地 Nginx。

五、方案4:官方二进制命令(纯命令行,无 brew)

1. 手动安装 Nginx(可选,也可直接用 brew 安装的二进制)

1
2
3
4
5
6
7
8
# 下载解压(示例版本,可换最新)
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3

# 编译安装(依赖 pcre、openssl,需提前 brew install pcre openssl)
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && sudo make install

2. 命令行控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动(默认配置 /usr/local/nginx/conf/nginx.conf)
sudo /usr/local/nginx/sbin/nginx

# 停止(优雅退出,处理完当前请求)
sudo /usr/local/nginx/sbin/nginx -s quit

# 强制停止
sudo /usr/local/nginx/sbin/nginx -s stop

# 重载配置(不中断服务)
sudo /usr/local/nginx/sbin/nginx -s reload

# 测试配置语法
sudo /usr/local/nginx/sbin/nginx -t

3. 开机自启(同方案2,写 plist 指向该二进制)

1
2
3
4
5
6
<key>ProgramArguments</key>
<array>
<string>/usr/local/nginx/sbin/nginx</string>
<string>-g</string>
<string>daemon off;</string>
</array>

六、常见问题与避坑

  1. 80 端口权限 denied:macOS 禁止普通用户绑定 1-1023 端口,需 sudo 启动,或用 sudo chmod u+s /usr/local/opt/nginx/bin/nginx 给二进制提权(谨慎使用)。
  2. 日志目录不存在:手动创建并赋权:
    1
    2
    sudo mkdir -p /usr/local/var/log/nginx
    sudo chown -R $USER:staff /usr/local/var/log/nginx
  3. launchd 加载失败:plist 格式必须严格 XML,无多余空格;权限必须 root:wheel644

七、总结和脚本

  • 新手/极简管理:选 Homebrew + brew services,3 条命令搞定安装、自启、控制。
  • 可视化需求:叠加 Nginx UI,网页端全流程管理,降低操作门槛。
  • 进阶/精细化控制:用 launchd 原生配置,自定义启停参数、日志路径、权限。

自动部署脚本和注意事项

  • 适配 Apple Silicon / Intel macOS 自动识别路径
  • 自动安装 Homebrew Nginx、配置开机自启
  • 修复 80 端口绑定权限
  • 自动安装并集成 Nginx UI
  • 全程复制直接终端执行,无需手动改配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
set -e

# 1. 检查并安装 Homebrew
if ! command -v brew &> /dev/null; then
echo "===== 开始安装 Homebrew ====="
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi

# 2. 安装 Nginx
echo "===== 安装 Nginx ====="
brew install nginx

# 3. 安装 Nginx UI
echo "===== 安装 Nginx UI ====="
brew tap 0xjacky/tools
brew install nginx-ui

# 4. 关闭系统自带 Apache 避免占用80端口
echo "===== 关闭系统 Apache ====="
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apached.plist 2>/dev/null || true

# 5. 配置 Nginx 80 端口权限修复
echo "===== 修复80端口权限 ====="
NGINX_BIN=$(which nginx)
sudo chown root:wheel "$NGINX_BIN"
sudo chmod u+s "$NGINX_BIN"

# 6. brew services 开机自启 + 启动服务
echo "===== 设置 Nginx、Nginx UI 开机自启并启动 ====="
brew services start nginx
brew services start nginx-ui

# 7. 放行/创建日志目录权限
echo "===== 配置日志目录权限 ====="
mkdir -p "$HOME/Library/Logs/nginx"
sudo chmod -R 755 "$HOME/Library/Logs/nginx"

# 8. 输出访问信息
echo -e "\n====================================="
echo "✅ Nginx 部署完成"
echo "🌐 Nginx 默认访问: http://localhost:8080"
echo "🌐 Nginx UI 访问: http://localhost:9000"
echo "🔑 Nginx UI 默认账号/密码: admin / admin"
echo "====================================="
echo "常用控制命令:"
echo "brew services start/stop/restart nginx"
echo "brew services start/stop/restart nginx-ui"

需要赋予文件可执行权限:

1
2
chmod +x deploy-nginx-mac.sh
./deploy-nginx-mac.sh

macOS安装nginx方案梳理
https://jycpp.github.io/2026/26-02-22-macOS安装nginx方案梳理.html
作者
Jet Yan
发布于
2026年2月22日
许可协议