nginx网页配置工具

github: https://github.com/cym1102/nginxWebUI

功能说明

本项目可以使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, ssl证书自动申请、续签、配置等, 最终生成nginx.conf文件并覆盖nginx的默认配置文件, 完成nginx的最终功能配置.

本项目可管理多个nginx服务器集群, 随时一键切换到对应服务器上进行nginx配置, 也可以一键将某台服务器配置同步到其他服务器, 方便集群管理

nginx本身功能复杂, 本项目并不能涵盖nginx所有功能, 只能配置常用功能, 更高级的功能配置仍然需要在最终生成的nginx.conf中进行手动编写。

部署此项目后, 配置nginx再也不用上网各种搜索, 再也不用手动申请和配置ssl证书, 只需要在本项目中进行增删改查就可方便的配置nginx。

技术说明

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

项目启动时会释放一个.sqlite.db到系统用户文件夹中, 注意进行备份

本系统通过Let's encrypt申请证书, 使用acme.sh脚本进行自动化申请和续签, 开启续签的证书将在每天凌晨2点进行续签, 只有超过60天的证书才会进行续签. 只支持在linux下签发证书.

添加tcp/ip转发配置支持时, 一些低版本的nginx可能需要重新编译,通过添加–with-stream参数指定安装stream模块才能使用, 但在ubuntu 18.04下, 官方软件库中的nginx已经带有stream模块, 不需要重新编译. 本系统如果配置了tcp转发项的话, 会自动引入ngx_stream_module.so的配置项, 如果没有开启则不引入, 最大限度优化ngnix配置文件.

jar安装说明

以Ubuntu操作系统为例,

注意:本项目需要在root用户下运行系统命令,极容易被黑客利用,请一定修改密码为复杂密码

1.安装java运行环境和nginx

ubuntu:

 
apt install openjdk-11-jdk
apt install nginx

centos:

 
yum install java-11-openjdk
yum install nginx

2.下载最新版发行包jar

 
wget -O /home/nginxWebUI/nginxWebUI.jar http://file.nginxwebui.cn/nginxWebUI-2.5.0.jar

有新版本只需要修改路径中的版本即可

3.启动程序

 
nohup java -jar -Xmx64m /home/nginxWebUI/nginxWebUI.jar --server.port=8081 --project.home=/home/nginxWebUI/ > /dev/null &

参数说明(都是非必填)

-Xmx64m 最大分配内存数

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

--project.home 项目配置文件目录,存放数据库文件,证书文件,日志等, 默认为/home/nginxWebUI/

--spring.database.type=mysql 使用其他数据库,不填为使用本地sqlite,选项包括mysql和postgresql

--spring.datasource.url=jdbc:mysql://ip:port/nginxwebui 数据库url

--spring.datasource.username=root 数据库用户

--spring.datasource.password=pass 数据库密码

注意命令最后加一个&号, 表示项目后台运行

docker安装说明

本项目制作了docker镜像, 同时包含nginx和nginxWebUI在内, 一体化管理与运行nginx.

1.安装docker容器环境

ubuntu:

 
apt install docker.io

centos:

 
yum install docker

2.拉取镜像:

 
docker pull cym1102/nginxwebui:latest

3.启动容器:

 
docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8081" --privileged=true --net=host  cym1102/nginxwebui:latest /bin/bash

注意:

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

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

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

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

  1. 日志默认存放在/home/nginxWebUI/log/nginxWebUI.log

另: 使用docker-compose时配置文件如下

 
version: "3.2"
services:
nginxWebUi-server:
image: cym1102/nginxwebui:2.5.0
volumes:
- type: bind
source: "/home/nginxWebUI"
target: "/home/nginxWebUI"
environment:
BOOT_OPTIONS: "--server.port=8080"
privileged: true
network_mode: "host"

编译说明

  1. 使用maven编译打包
 
mvn clean package
  1. 使用docker构建镜像
 
docker build -t nginxwebui:2.5.0 .

添加开机启动

  1. 编辑service配置
 
vim /etc/systemd/system/nginxwebui.service
 
[Unit]
Description=NginxWebUI
After=syslog.target
After=network.target [Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home/nginxWebUI
ExecStart=/usr/bin/java -jar /home/nginxWebUI/nginxWebUI.jar
Restart=always [Install]
WantedBy=multi-user.target

之后执行

 
systemctl daemon-reload
systemctl enable nginxwebui.service
systemctl start nginxwebui.service

使用说明

打开 http://xxx.xxx.xxx.xxx:8081 进入主页

登录页面, 第一次打开会要求初始化管理员账号

进入系统后, 可在管理员管理里面添加修改管理员账号

在http参数配置中可以配置nginx的http项目,进行http转发, 默认会给出几个常用配置, 其他需要的配置可自由增删改查. 可以勾选开启日志跟踪, 生成日志跟踪配置项, 每天0点时刻可生成上一天的日志分析报告. 由于日志文件access.log文件过大, 默认只保留7天的log文件, 但分析报告可一直保留.

在TCP参数配置中可以配置nginx的stream项目参数, 大多数情况下可不配.

在反向代理中可配置nginx的反向代理即server项功能, 可开启ssl功能, 可以直接从网页上上传pem文件和key文件, 或者使用系统内申请的证书, 可以直接开启http转跳https功能,也可开启http2协议

在负载均衡中可配置nginx的负载均衡即upstream项功能, 在反向代理管理中可选择代理目标为配置好的负载均衡

在html静态文件上传中可直接上传html压缩包到指定路径,上传后可直接在反向代理中使用,省去在Linux中上传html文件的步骤

在证书管理中可添加证书, 并进行签发和续签, 开启定时续签后, 系统会自动续签即将过期的证书, 注意:证书的签发是用的acme.sh的dns模式, 需要配合阿里云的aliKey和aliSecret来使用. 请先申请好aliKey和aliSecret

备份文件管理, 这里可以看到nginx.cnf的备份历史版本, nginx出现错误时可以选择回滚到某一个历史版本

最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行效验和重启, 可以选择生成单一nginx.conf文件还是按域名将各个配置文件分开放在conf.d下

log管理, 在http配置中如果开启了log监控的话, 会每天在这里生成日志分析报告.

远程服务器管理, 如果有多台nginx服务器, 可以都部署上nginxWebUI, 然后登录其中一台, 在远程管理中添加其他服务器的ip和用户名密码, 就可以在一台机器上管理所有的nginx服务器了.

提供一键同步功能, 可以将某一台服务器的数据配置和证书文件同步到其他服务器中

接口开发

本系统提供http接口调用, 只要打开 http://xxx.xxx.xxx.xxx:8081/doc.html 即可查看knife4j接口页面.

接口调用需要在header中添加token, 其中token的获取需要在管理员管理中, 打开用户的接口调用权限, 然后通过用户名密码调用获取token接口, 才能得到token, 然后在knife4j的文档管理中设置全局token.

注意: 参数说明中, 带*前缀的均是必填项

如要屏蔽knife4j界面展示, 只要在启动参数添加 --knife4j.production=true 即可屏蔽

找回密码

如果忘记了登录密码,可按如下教程找回密码

  1. 安装sqlite3命令
 
apt install sqlite3
  1. 读取sqlite.db文件
 
sqlite3 /home/nginxWebUI/sqlite.db
  1. 查找admin表
 
select * from admin;
  1. 退出sqlite3
 
.quit

nginxWebUI的更多相关文章

  1. Nginx WebUI管理

    简介 NginxWebUI是一款方便实用的nginx 网页配置工具,可以使用 WebUI 配置 Nginx 的各项功能,包括端口转发,反向代理,ssl 证书配置,负载均衡等,最终生成「nginx.co ...

随机推荐

  1. zookeeper 异常 :stat is not executed because it is not in the whitelist. Connection closed b

    1 .问题 1.启动 zookeeper 后 用指令:  telnet 127.0.0.1 2181 连接 提示输入指令 :stat 后报错,然后关闭连接 2.问题解决: 修改启动指令 zkServe ...

  2. SQL 父子表,显示表中每条记录所在层级

    1.sqlserer 中有一张父子关系表,表结构如下: CREATE TABLE [dbo].[testparent]( [ID] [int] IDENTITY(1,1) NOT NULL, [nam ...

  3. Appium获取toast消息(二)

    刚接触appium进行移动端设备的UI自动化,在遇到toast消息的时候很是苦恼了一阵,最后通过强大的搜索引擎找到了个相对解决方法,废话不多说,直接贴代码↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ...

  4. java中关于string类和常量池的一点猜想

    public class StringTest { /**   * @param args   */  public static void main(String[] args) {   test1 ...

  5. 并行Louvain社区检测算法

    因为在我最近的科研中需要用到分布式的社区检测(也称为图聚类(graph clustering))算法,专门去查找了相关文献对其进行了学习.下面我们就以这篇论文IPDPS2018的文章[1]为例介绍并行 ...

  6. 程序员Meme 第01期

  7. matplotlib 坐标轴刻度能见度问题

    matplotlib 画图时如果图像太大就会挡住了坐标轴,刻度就看不到了.可以利用zorder设置level,level越小越先绘制. 例子: 1 import matplotlib.pyplot a ...

  8. 深入.NET框架与面向对象的回顾

    .NET DOTNET DNET 点NET(.NET框架支持跨语言开发.如C#,VB .NET ,C++.NET,F# ,lronRuby,Others) 任何人,在任何地方,使用任何终端设备,都能访 ...

  9. 【.NET 与树莓派】控制彩色灯带(WS28XX)

    彩色灯带,相信不用老周多说,大家都知道,没准你家里的灯墙里面就有.老周的茅屋是早期建造的,所以没有预留的灯槽,明灯的话是不好看的,因此老周家里没使用灯带.不过,像柜子后面,显示器后面,书桌边沿这些地方 ...

  10. 解决android studio no debuggable process

    这个问题可能是由多种因素造成的. 一.可能是buildtypes配置或选择错误,在对应module的build.gradle中确认如下配置 debug { debuggable true//一定要配置 ...