马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、nginxWebUI 是什么:用一句话说清
nginxWebUI 是一个用 Web 界面配置 nginx 的工具,覆盖 http 转发、tcp 转发、反向代理、负载均衡、SSL 证书自动申请与续签等功能,最终生成 nginx.conf 并覆盖 nginx 的默认配置文件,完成配置落地。
它的价值很实在:配完 nginx 再也不用上网各种搜配置片段,也不用手动申请和续签 SSL 证书,增删改查都在界面里完成。同时它可管理多个 nginx 服务器,一键切换、一键同步,适合集群场景。
先说边界,免得期望错位:nginx 功能复杂,本项目并不能涵盖所有功能,只覆盖常用配置;更高级的配置仍然要在生成的 nginx.conf 里手动编写。
二、技术底子:用什么写的
- 基于 Spring Boot 的 Web 体系;
- 数据库用 SQLite,因此服务器上不需要另外装任何数据库——这是它能一条命令跑起来的原因;
- 项目启动时会释放一个 .sqlite.db 到系统用户目录,记得备份;
- ORM 用了 sqlHelper(一个可以像 MongoDB 那样操作 SQL 数据库的 ORM,支持 sqlite/mysql/postgresql 三种);
- 证书通过 Let's Encrypt 申请,用 acme.sh 自动化申请和续签,开启续签的证书每天凌晨 2 点续签,只有超过 60 天的证书才会续签,且只支持在 Linux 下签发。
两个坑要提前知道:
- 申请证书必须用 80 端口,所以申请和续签时 nginx 会短暂关闭,别在这时候发业务请求;
- 添加 tcp/ip 转发时,低版本 nginx 可能需要重新编译(加
--with-stream 装 stream 模块);Ubuntu 18.04 官方源里的 nginx 已自带 stream 模块,不用重编。系统只会在开了 tcp 转发时自动引入 ngx_stream_module.so 相关配置,不开就不引,尽量精简配置文件。
三、方式一:jar 安装(Ubuntu 为例,用 root 执行)
注意:本项目需要在 root 用户下运行系统命令,风险敞口大,务必把密码设成复杂密码。
1. 装 Java 运行环境和 nginx
apt install openjdk-8-jdk
apt install nginx
2. 下载发行包
wget http://www.nginxwebui.cn/download/nginxWebUI-2.1.6.jar
# 有新版本只需要修改路径中的版本即可
3. 启动
nohup java -jar -Xmx64m nginxWebUI-2.1.6.jar --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &
参数都是非必填:
-Xmx64m:最大分配内存;
--server.port:占用端口,默认 8080;
--project.home:项目配置目录,存放数据库文件、证书文件、日志 等,默认 /home/nginxWebUI/;
- 命令末尾的
& 表示后台运行。
四、方式二:Docker 安装(推荐)
官方做了 Docker 镜像,同时包含 nginx 和 nginxWebUI,一体化管理与运行。
1. 装 Docker
apt install docker.io
2. 拉镜像
docker pull registry.cn-hangzhou.aliyuncs.com/cym1102/nginxwebui:2.1.6
docker run -itd -v /home/nginxWebUI:/home/nginxWebUI \
-e BOOT_OPTIONS="--变量名=变量值 --变量名2=变量值2" \
--privileged=true --net=host \
registry.cn-hangzhou.aliyuncs.com/cym1102/nginxwebui:2.1.6 /bin/bash
三个必须注意的点:
- 必须用
--net=host:直接映射本机端口,因为内部 nginx 可能用任意端口,所以要映射本机所有端口;
- 必须映射
/home/nginxWebUI:数据库、nginx 配置、日志 、证书都在这,升级镜像时靠它保住数据不丢,记得备份;
-e BOOT_OPTIONS 可填 java 启动参数,jar 方式里的那些参数都能填这里(改端口等)。
日志 默认在 /home/nginxWebUI/log/nginxWebUI.log。
4. docker-compose 写法
version: '3'
services:
nginxwebui:
image: registry.cn-hangzhou.aliyuncs.com/cym1102/nginxwebui:2.1.6
container_name: nginxwebui
restart: always
volumes:
- ./data:/home/nginxWebUI
environment:
- BOOT_OPTIONS=-Xmx64m
- TZ=Asia/shanghai
privileged: true
network_mode: "host"
所有数据存在 yaml 同目录下的 data 文件夹里。
五、界面怎么用:几个常用页签
浏览器开 http://<IP>:8080,首次打开要求初始化管理员账号,之后可在「管理员管理」里增删。
- http 参数:设置 nginx 的 http 配置,做 http 转发,默认会给出几个常用配置,其他按需增删改查;可勾选开启日志跟踪,会生成日志跟踪配置,每天 0 点生成前一天的日志分析报告。access.log 过大,默认只保留 7 天日志,但分析报告可以一直保留。
- TCP 参数:设置 nginx 的 stream 模块参数,大多数情况不用配;
- 反向代理:对应 nginx 的
server 项,可开启 ssl、直接上传 pem 和 key 文件,或使用系统内申请的证书,可开启 http 跳 https、也能开 http2;
- 负载均衡:对应
upstream,在反向代理里可以把代理目标选成建好的负载均衡;
- html 静态文件上传:直接上传 html 压缩包到指定路径,上传后即可在反向代理中使用,省掉往 Linux 传文件的步骤;
- 证书管理:添加证书、签发和续签,开启定时续签后系统会自动续签即将过期的证书;注意签发用的是 acme.sh 的 dns 模式,需要配阿里云的 AccessKey/Secret;
- 备份文件管理:能看到 nginx.conf 的历史版本,nginx 出问题时可以回滚到某个历史版本;
- 最终生成 conf:可在此进一步手动修改,确认无误后覆盖本机 conf 文件,再校验和重启,可选择生成单一 nginx.conf,或按域名分开放在 conf.d 下;
- log 管理:http 设置里开了日志监控
的话,每天会在这里生成日志分析报告;
- 远程服务器管理:多台 nginx 各装一个 nginxWebUI,在其中一台的远程管理里添加其他服务器的 IP 和用户名密码,就能在一台机器上管所有 nginx,并提供一键同步(把某台的配置和证书同步到其他服务器)。
六、忘记密码怎么办
apt install sqlite3 # 装 sqlite3 命令行
sqlite3 /home/nginxWebUI/sqlite.db # 打开数据库文件
select * from admin; # 查 admin 表
quit # 退出
七、三条安全提醒
- 必须以 root 权限操作,等于把 root 暴露在 Web 上——改复杂密码、只放内网、必要再暴露;
- Docker 部署用了
privileged + --net=host:便利性换来了不小的风险,不要把这个容器跑在会暴露给公网的网络里;
- 数据目录(sqlite.db + nginx.conf + 证书)务必定期备份——所有状态都在那一个目录里,丢了就没历史版本可回滚。
八、一句话总结
jar 方式:装 JDK+nginx → 下 nginxWebUI-x.x.x.jar → nohup java -jar ... --project.home=... 后台跑。
容器方式:拉 cym1102/nginxwebui 镜像 → --net=host + 挂 /home/nginxWebUI 数据卷 → 开 8080。
它解决的是「nginx 配置太碎太难记」,不解决「nginx 的全部能力」。 用它管住 80% 常用配置、把证书续签自动化,剩下 20% 高级配置回落到生成的 conf 里手写——这就是这套工具最务实的用法。
(本文由 qidao123.com企服评测-应用市场 编辑提示整理:内容围绕 nginxWebUI 的搭建、界面配置与多服务器管理,适用于 nginx 反向代理、负载均衡与 HTTPS 证书的日常运维。涉及 root 权限操作请做好访问控制与备份。) |