在 macOS 上搭建 Nginx,最推荐用 Homebrew + brew services 管理(一键启停+开机自启),搭配 Nginx UI 做网页控制面板;也可原生用 launchd 实现自启,或用官方命令直接控制。下面分方案给出完整操作。
一、方案总览(按推荐度)
- Homebrew + brew services(首选):命令行极简管理、自动配置
launchd 开机自启、无额外依赖。
- Homebrew + launchd(原生自启):手动写 plist,适合精细化权限/启停控制。
- Nginx UI(网页控制界面):Web 面板一键启停、配置编辑、日志查看,兼容 brew 安装的 Nginx。
- 官方二进制命令(纯命令行):无需 brew,直接调用 nginx 二进制,适合绿色/便携部署。
二、方案1:Homebrew + brew services(最简,推荐)
1. 安装 Nginx
1 2 3 4 5 6 7 8
| brew install nginx
nginx -v
|
2. 命令行控制(一键启停+自启)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| brew services start nginx
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
| sudo apachectl stop
nano /opt/homebrew/etc/nginx/nginx.conf
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
| 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
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
./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
| 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>
|
六、常见问题与避坑
- 80 端口权限 denied:macOS 禁止普通用户绑定 1-1023 端口,需
sudo 启动,或用 sudo chmod u+s /usr/local/opt/nginx/bin/nginx 给二进制提权(谨慎使用)。
- 日志目录不存在:手动创建并赋权:
1 2
| sudo mkdir -p /usr/local/var/log/nginx sudo chown -R $USER:staff /usr/local/var/log/nginx
|
- launchd 加载失败:plist 格式必须严格 XML,无多余空格;权限必须
root:wheel、644。
七、总结和脚本
- 新手/极简管理:选 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
if ! command -v brew &> /dev/null; then echo "===== 开始安装 Homebrew =====" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" fi
echo "===== 安装 Nginx =====" brew install nginx
echo "===== 安装 Nginx UI =====" brew tap 0xjacky/tools brew install nginx-ui
echo "===== 关闭系统 Apache =====" sudo apachectl stop sudo launchctl unload -w /System/Library/LaunchDaemons/org.apached.plist 2>/dev/null || true
echo "===== 修复80端口权限 =====" NGINX_BIN=$(which nginx) sudo chown root:wheel "$NGINX_BIN" sudo chmod u+s "$NGINX_BIN"
echo "===== 设置 Nginx、Nginx UI 开机自启并启动 =====" brew services start nginx brew services start nginx-ui
echo "===== 配置日志目录权限 =====" mkdir -p "$HOME/Library/Logs/nginx" sudo chmod -R 755 "$HOME/Library/Logs/nginx"
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
|