Nginx 项目地址:https://gitee.com/cym1102/nginxWebUI NginxWebUI是一个 Nginx 网页管理工具,使用网页来快速配置 Nginx 单机与集群。

NginxWebUI单机和集群版Nginx部署管理 - 图1

项目介绍

NginxWebUI是一款图形化管理 Nginx 配置的工具,可以使用网页来快速配置 Nginx 的各项功能,包括 http 协议转发,tcp 协议转发,反向代理,负载均衡,静态 html 服务器,ssl 证书自动申请、续签、配置等,配置好后可一键生成 nginx.conf 文件,同时可控制 Nginx 使用此文件进行启动与重载,完成对 Nginx 的图形化控制闭环。 它也可管理多个 Nginx 服务器集群,随时一键切换到对应服务器上进行 Nginx 配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理。 ## 项目优势 ### 与传统方式对比 下面通过一个表格,直观展示nginxWebUI相比传统手动配置的优势:
对比项 nginxWebUI 传统手动配置
使用门槛 低,可视化操作 高,需要掌握配置语法
配置效率 快,点击即可完成 慢,需要手动编辑文件
出错概率 低,有语法检查 高,容易写错
配置备份 自带备份功能 需要手动备份
证书管理 自动申请与续期 需要手动操作
监控功能 内置监控面板 需要额外配置
多节点管理 支持集中管理 需要逐个配置

实现原理

nginxWebUI采用Java+Vue技术栈开发,其核心原理如下:

  1. 配置解析层
  • 使用自研的解析器将nginx.conf转换为对象模型
  • 支持复杂配置的双向转换
  • 实现了配置文件的语法检查
  1. 业务逻辑层
  • 采用SpringBoot框架,提供RESTful API
  • 实现了配置管理、证书管理等核心功能
  • 使用WebSocket实现实时日志查看
  1. 展示层
  • 基于Vue开发的前端界面
  • 响应式设计,支持多端适配
  • 提供丰富的可视化组件

使用注意事项

  1. 权限问题
  • 需要确保运行用户对nginx配置目录有读写权限
  • Docker部署时注意挂载目录权限
  1. 安全性
  • 建议修改默认管理员密码
  • 限制管理界面的访问IP
  • 开启操作日志记录
  1. 性能考虑
  • 大量配置文件时可能影响界面响应速度
  • 建议定期清理不用的配置备份

安装

Docker安装

1、安装Docker容器环境

  • Ubuntu:
  1. apt install docker.io
  • Centos:
  1. yum install docker

2、拉取镜像:

  1. docker pull cym1102/nginxwebui:latest
  2. docker pull cym1102/nginx-web-ui:latest

3、启动容器:

  1. docker run -itd \
  2. -v /home/nginxWebUI:/home/nginxWebUI \
  3. -e BOOT_OPTIONS="--server.port=8080" \
  4. --privileged=true \
  5. --net=host \
  6. cym1102/nginxwebui:latest
  7. # 启动容器
  8. docker run -d \
  9. -p 8080:8080 \
  10. -v /home/nginx/conf:/home/nginx/conf \
  11. -v /home/nginx/html:/home/nginx/html \
  12. -v /home/nginx/logs:/home/nginx/logs \
  13. -v /home/nginxWebUI:/home/nginxWebUI \
  14. --name nginxWebUI \
  15. cym1102/nginx-web-ui:latest

注意:启动容器时请使用--net=host参数,直接映射本机端口,因为内部Nginx可能使用任意一个端口,所以必须映射本机所有端口。

容器需要映射路径/home/nginxWebUI:/home/nginxWebUI,此路径下存放项目所有数据文件,包括数据库,Nginx配置文件,日志,证书等,升级镜像时,此目录可保证项目数据不丢失,请注意备份。

-e BOOT_OPTIONS 参数可填充java启动参数,可以靠此项参数修改端口号

--server.port 占用端口,不填默认以8080端口启动

日志默认存放在/home/nginxWebUI/log/nginxWebUI.log 另:使用docker-compose时配置文件如下

  1. version: "3.2"
  2. services:
  3. nginxWebUi-server:
  4. image: cym1102/nginxwebui:latest
  5. volumes:
  6. - type: bind
  7. source: "/home/nginxWebUI"
  8. target: "/home/nginxWebUI"
  9. environment:
  10. BOOT_OPTIONS: "--server.port=8080"
  11. privileged: true
  12. network_mode: "host"

Linux直接安装

  1. # 下载最新版本
  2. wget https://github.com/cym1102/nginxWebUI/releases/download/latest/nginxWebUI.jar
  3. # 启动服务
  4. nohup java -jar -Xmx64m nginxWebUI.jar --server.port=8080 --project.home=/home/nginx

功能说明

本项目是基于 solon 的 web 系统,数据库使用 h2,因此服务器上不需要安装任何数据库。

系统运行状态

NginxWebUI单机和集群版Nginx部署管理 - 图2

通过查看运行状态可以查看 CPU,内存,磁盘占用率。

基本参数配置

NginxWebUI单机和集群版Nginx部署管理 - 图3

基本使用示例

  1. # 示例:配置一个简单的反向代理
  2. server {
  3. listen 80;
  4. server_name example.com;
  5. location / {
  6. proxy_pass http://backend:8080;
  7. proxy_set_header Host $host;
  8. proxy_set_header X-Real-IP $remote_addr;
  9. }
  10. }

通过nginxWebUI的界面操作即可完成上述配置:

  1. 点击”服务器管理” -> “添加服务器”
  2. 填写域名example.com
  3. 添加反向代理规则,填写目标地址
  4. 点击保存并重载配置

http 参数配置

NginxWebUI单机和集群版Nginx部署管理 - 图4

反向代理

  • 支持多种代理模式
  • 内置常用Header配置
  • 支持WebSocket代理
示例代码:
  1. # WebSocket代理配置
  2. location /websocket {
  3. proxy_pass http://backend:8080;
  4. proxy_http_version 1.1;
  5. proxy_set_header Upgrade $http_upgrade;
  6. proxy_set_header Connection "upgrade";
  7. }

NginxWebUI单机和集群版Nginx部署管理 - 图5

Stream参数配置

NginxWebUI单机和集群版Nginx部署管理 - 图6

负载均衡(upstream)配置

  • 支持多种负载算法
  • 实时健康检查
  • 动态权重调整
示例代码:
  1. upstream backend {
  2. server 192.168.1.10:8080 weight=5;
  3. server 192.168.1.11:8080 weight=5;
  4. server 192.168.1.12:8080 backup;
  5. }

NginxWebUI单机和集群版Nginx部署管理 - 图7

配置管理

  • 语法实时检查
  • 配置文件备份
  • 修改历史记录
  • 配置模板功能

SSL证书管理

  • 自动申请Let’s Encrypt证书
  • 到期自动续期
  • 支持泛域名证书
  • 支持自定义证书导入

使用场景

场景一:快速部署HTTPS站点

问题:手动配置HTTPS既繁琐又容易出错

解决方案:使用nginxWebUI的证书管理功能

  1. 自动申请证书
  1. # 传统方式需要手动执行
  2. certbot certonly --webroot -w /var/www/html -d example.com
  3. # nginxWebUI只需点击"申请证书"按钮
  1. 自动配置HTTPS
  1. # nginxWebUI自动生成以下配置
  2. server {
  3. listen 443 ssl;
  4. server_name example.com;
  5. ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  6. ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  7. ssl_protocols TLSv1.2 TLSv1.3;
  8. }

场景二:微服务架构中的网关配置

问题:微服务架构中需要配置大量路由规则

解决方案:使用nginxWebUI的批量管理功能

  1. 服务发现集成
  1. # 自动生成服务路由
  2. location /api/user {
  3. proxy_pass http://user-service;
  4. }
  5. location /api/order {
  6. proxy_pass http://order-service;
  7. }
  1. 负载均衡配置
  1. upstream user-service {
  2. server 10.0.0.1:8080 max_fails=3 fail_timeout=30s;
  3. server 10.0.0.2:8080 max_fails=3 fail_timeout=30s;
  4. }

场景三:多环境配置管理

问题:测试、预发、生产环境配置维护困难

解决方案:使用nginxWebUI的环境管理功能

环境隔离

  1. # 开发环境
  2. server {
  3. listen 80;
  4. server_name dev.example.com;
  5. location / {
  6. proxy_pass http://dev-backend;
  7. }
  8. }
  9. # 生产环境
  10. server {
  11. listen 80;
  12. server_name example.com;
  13. location / {
  14. proxy_pass http://prod-backend;
  15. }
  16. }

详细文档

官方资源

相关资源