0xJacky/nginx-ui · 上手攻略
- 仓库:0xJacky/nginx-ui
- 链接:https://github.com/0xJacky/nginx-ui
- 分类:engineering / web-server-management
- 作者:spark
- 更新:2026-10-10
§0 速览
本棒 net-new = 1 件(nginx-ui 单仓独立攻略,无沿用件)。
来源:GitHub README(fetch 200 OK)+ Docker Hub uozi/nginx-ui + nginxui.com 官方文档 + 第三方实测报告(hysenlabs / DEV.to / pkg.go.dev)。Star 11,581,最近提交 2026-10-10,许可证 AGPL-3.0(⚠️ 见下文法律注意)。
一、是什么
nginx-ui 是 0xJacky、Hintay、Akino 共同开发的 Nginx Web 管理面板,单二进制发布(Go 后端 + Vue 前端),自称为"又一个 Nginx WebUI"——名字谦卑,但功能相当完整。它把原本只能通过 vim /etc/nginx/nginx.conf + nginx -s reload 完成的配置、站点、证书、日志、终端操作,集中到一个 Web 界面里,并自带 MCP(Model Context Protocol)接口允许 AI Agent 介入。
二、解决什么问题
运维 Nginx 时最痛的几件事:
- 多节点重复操作——手工 scp + reload,nginx-ui 提供"集群镜像操作",一批服务器一次推送。
- 配置变更可追溯——每次保存自动备份版本,支持 diff 和回滚。
- 证书易过期——内置 Let's Encrypt 一键签发 + 自动续期,HTTP-01 端口 9180。
- 写反代配置容易写错 WebSocket——自带 NgxConfigEditor 块编辑器与 Ace 代码编辑器,含 LLM 代码补全。
- 线上排障要 SSH——Web Terminal + 在线日志查看器。
- AI 辅助配置——内置 ChatGPT/DeepSeek-R1 助手,可显示思维链;MCP 通道给 Claude/Cursor 这类 Agent 直接操控。
三、快速安装
方案 A:Linux 一键脚本(systemd)
适合把宿主 Nginx 也交给它管理的场景。脚本会自动安装 nginx-ui systemd 单元,默认端口 9000、HTTP-01 校验端口 9180。
bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install
控制命令:
systemctl start nginx-ui
systemctl stop nginx-ui
systemctl restart nginx-ui
systemctl status nginx-ui
卸载(保留配置和数据库):
bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ remove
方案 B:Docker(推荐给容器化部署)
镜像基于官方 nginx:latest,可以直接"替换宿主 Nginx"——只要把容器 80/443 端口发布出去即可。首次启动要保证 -v 挂载的 /etc/nginx 是空目录。
docker run -dit \
--name=nginx-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-v /mnt/user/appdata/nginx:/etc/nginx \
-v /mnt/user/appdata/nginx-ui:/etc/nginx-ui \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:80 -p 8443:443 \
uozi/nginx-ui:latest
启动后浏览器打开 http://<host>:8080/install 走首次初始化向导。如果改了端口映射,访问映射到容器 80 端口的那个宿主机端口。
docker-compose.yml 版本:
services:
nginx-ui:
stdin_open: true
tty: true
container_name: nginx-ui
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- '/mnt/user/appdata/nginx:/etc/nginx'
- '/mnt/user/appdata/nginx-ui:/etc/nginx-ui'
- '/var/www:/var/www'
- '/var/run/docker.sock:/var/run/docker.sock'
ports:
- 8080:80
- 8443:443
image: 'uozi/nginx-ui:latest'
方案 C:可执行二进制 + nohup
适合不想装服务、临时调试:
./nginx-ui -config app.ini # 前台
nohup ./nginx-ui -config app.ini & # 后台
kill -9 $(ps -aux | grep nginx-ui | grep -v grep | awk '{print $2}')
支持平台覆盖 macOS 11+、Windows 10+、Linux(含 arm64/armv5-7/mips32-64/riscv64/loongarch64)、FreeBSD/OpenBSD/Dragonfly BSD、OpenWrt。
方案 D:从源码构建
需要 Make、Golang 1.23+、Node.js 21+(README 注明)。先后端构建、前端 bun install && bun run build,再回到根目录:
go generate
go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'" -o nginx-ui -v main.go
四、核心用法
1. Debian 风格站点目录约定
nginx-ui 遵循 Debian 的 sites-available / sites-enabled 软链约定,启用站点时自动在 sites-enabled 建软链。非 Debian/Ubuntu 系统需要改 nginx.conf,加入:
http {
# ...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
否则站点不会被加载。⚠️ 这是最常见的"装上但站点不生效"原因。
2. Nginx 反代 nginx-ui 自身的配置(关键片段)
Web Terminal 和实时日志用了 WebSocket,必须带 Upgrade/Connection 头映射:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name <your_server_name>;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name <your_server_name>;
ssl_certificate /path/to/ssl_cert;
ssl_certificate_key /path/to/ssl_cert_key;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:9000/;
}
}
从老版本升级的 Docker 用户需要额外看 Docker WebSocket fix 修 conf.d/nginx-ui.conf。
3. MCP 接口(AI Agent 自动化)
nginx-ui 暴露 MCP 端点,允许 Claude / Cursor / 自研 Agent 通过标准化协议读写配置、重载服务。直接对接 MCP 客户端即可,无需手写 API 包装。
4. AI 助手
面板内集成 ChatGPT / DeepSeek-R1,支持 CoT 思维链展示——可以看它怎么推理你的 nginx 配置为何不优。
五、典型适用场景
- 小型 VPS / 个人服务器:单台机器想可视化管 Nginx,不想记
nginx -t+nginx -s reload那一套。 - 中小团队多节点运维:用集群镜像功能批量推送配置。
- 证书自动续期场景:避免手动 acme.sh cron。
- AI 辅助运维:MCP 让 Agent 直接调 nginx-ui,省一层适配。
- Demo / 教学环境:官方提供
https://demo.nginxui.com(admin / admin)。
六、坑与注意
- AGPL-3.0 传染性 ⚠️:如果你修改并对外提供服务(SaaS / 网络服务),AGPL 要求你向用户公开修改后的源码。内部使用或仅自用问题不大,对外提供服务请评估法律风险(hysenlabs 2026-10 报告特别提示)。
- 默认分支是
dev⚠️:生产环境不要直接跑dev分支,要用 latest release 标签版(2026-08 报告时为 v2.5.10,更晚版本以 release 页为准——具体版本号未在抓取页面 verbatim 显示,⚠️ 待复核)。 - Debian 风格配置:CentOS / Arch 默认
nginx.conf不含sites-enabled,装完必须按上面改include,否则站点保存后不生效。 - 首次启动端口冲突:脚本默认 9000/9180,如果被占用要改
/usr/local/etc/nginx-ui/app.ini后systemctl restart nginx-ui。 - Docker 挂载
/etc/nginx必须空目录:否则容器启动后会因写权限或冲突配置失败。 - WebSocket 反代配错:只
proxy_pass不带Upgrade头,Web Terminal 和实时日志会断流。 - 从老镜像升级:需修
conf.d/nginx-ui.conf,参考官方 WebSocket fix 指南。 - Docker socket 挂载 ⚠️:
-v /var/run/docker.sock:/var/run/docker.sock会给容器 root 级控制宿主 docker 的能力,安全风险高,公网部署请评估替代方案(如 docker-in-docker / socket-proxy)。
七、与同类对比
| 工具 | 语言 | 部署形态 | 集群 | AI 集成 | 许可证 |
|---|---|---|---|---|---|
| nginx-ui | Go + Vue | 单二进制 / Docker / systemd | ✅ 镜像多节点 | ✅ ChatGPT + DeepSeek-R1 CoT + MCP | AGPL-3.0 |
| Nginx Proxy Manager | Node.js + Vue | Docker 为主 | ❌ | ❌ | MIT |
| Ajenti | Python | 包安装 | ❌ | ❌ | MIT |
| Cockpit Nginx module | 各种 | 系统组件 | 取决于 Cockpit | ❌ | LGPL |
nginx-ui 的差异化在集群管理 + AI 集成 + MCP,单机简单场景 Nginx Proxy Manager 更轻量,但需要 AI 运维或多节点批量操作时 nginx-ui 优势明显。
八、一句话推荐
适合多节点运维 + 想要 AI 辅助 / MCP 集成的团队首选;AGPL 是唯一需要事先评估的门槛,单机玩玩 NPM 更省心。
诚实标注:①uozi/nginx-ui:latest 镜像具体 tag / Dockerfile 时间未在 README 直接给出 verbatim,⚠️ 部署前到 Docker Hub 复核最新稳定 tag;②仓库 README 标注的 Go 1.23+ / Node 21+ 为构建期依赖,运行期只需二进制;③Demo 站凭据 admin/admin 为公开测试账号,公网部署必须立刻改密码。