Nginx 配置可视化
前言
近期在服务器上配的一些小东西
最近时间稍微多了些,便又开始捣鼓我那迷你服务器,算是有些成果陆陆续续搭建了几个新的服务在博客里。
服务列表
nginxWebUI
nginx
网页配置工具- QQ技术交流群:
1106758598
- 官网地址:
http://www.nginxwebui.cn
- 源码地址:
https://git.chihiro.org.cn/chihiro/nginxWebUI
功能说明
本项目可以使用WebUI
配置nginx
的各项功能, 包括http
协议转发, tcp
协议转发, 反向代理, 负载均衡, ssl
证书自动申请、续签、配置等, 最终生成nginx.conf
文件并覆盖nginx
的默认配置文件, 完成nginx
的最终功能配置。
本项目可管理多个nginx
服务器集群, 随时一键切换到对应服务器上进行nginx
配置, 也可以一键将某台服务器配置同步到其他服务器, 方便集群管理。
nginx
本身功能复杂, 本项目并不能涵盖nginx
所有功能, 只能配置常用功能, 更高级的功能配置仍然需要在最终生成的nginx.conf
中进行手动编写。
部署此项目后, 配置nginx
再也不用上网各种搜索, 再也不用手动申请和配置ssl
证书, 只需要在本项目中进行增删改查就可方便的配置nginx
。
技术说明
本项目是基于springBoot
的web
系统, 数据库使用sqlite
, 因此服务器上不需要安装任何数据库。
其中orm
使用了本人自己开源的sqlHelper
项目作为orm
, 使用sqlite
作为数据库, 项目启动时会释放一个.sqlite.db
到系统用户文件夹中, 注意进行备份。
sqlHelper
是一个可以像mongodb一样使用sql数据库的orm, 解放开发者对sql
数据库表结构的维护工作, 支持sqlite
,mysql
,postgresql
三种数据库, 有兴趣的可以了解一下https://gitee.com/cym1102/sqlHelper
。
本系统通过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
的配置项, 如果没有开启则不引入, 最大限度优化ngnix
配置文件。
jar安装说明
以Ubuntu
操作系统为例, 以下命令请使用root
账户权限执行
注意:本项目需要在root
用户下运行系统命令,极容易被黑客利用,请一定修改密码为复杂密码
1.安装java
运行环境和nginx
apt install openjdk-8-jdk
apt install nginx
2.下载最新版发行包jar
wget http://file.nginxwebui.cn/nginxWebUI-2.6.2.jar
有新版本只需要修改路径中的版本即可
3.启动程序
nohup java -jar -Xmx64m nginxWebUI-2.6.2.jar --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &
参数说明(都是非必填)
-Xmx64m
最大分配内存数
--server.port
占用端口, 默认以8080端口启动
--project.home
项目配置文件目录,存放数据库文件,证书文件,日志等, 默认为/home/nginxWebUI/
注意命令最后加一个&
号, 表示项目后台运行
docker
安装说明
本项目制作了docker
镜像, 同时包含nginx
和nginxWebUI
在内, 一体化管理与运行nginx
.
1.安装docker
容器环境
apt install docker.io
2.下载镜像:
docker pull cym1102/nginxwebui:latest
- 启动容器:
docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --privileged=true --net=host cym1102/nginxwebui:latest /bin/bash
注意:
- 启动容器时请使用
--net=host
参数, 直接映射本机端口, 因为内部nginx
可能使用任意一个端口, 所以必须映射本机所有端口.- 容器需要映射路径
/home/nginxWebUI:/home/nginxWebUI
, 此路径下存放项目所有数据文件, 包括数据库,nginx
配置文件, 日志, 证书等, 升级镜像时, 此目录可保证项目数据不丢失. 请注意备份.-e BOOT_OPTIONS
参数可填充java
启动参数,jar
安装教程中的参数均可使用, 可以靠此项参数修改端口号等- 日志默认存放在
/home/nginxWebUI/log/nginxWebUI.log
docker-compose
安装说明
博主整理出了docker-compsoe
安装此nginx可视化界面的文件。
docker-compose.yaml
文件如下
version: '3'
services:
nginxwebui:
image: cym1102/nginxwebui:latest
container_name: nginxwebui
restart: always
volumes:
- ./data:/home/nginxWebUI
environment:
- BOOT_OPTIONS==-Xmx64m
- TZ=Asia/shanghai
privileged: true
network_mode: "host"
注意:项目下所有数据储存在
yaml
文件同目录下的data
文件夹中。
使用说明
打开 http://xxx.xxx.xxx.xxx:8080
进入主页
登录页面, 第一次打开会要求初始化管理员账号
进入系统后, 可在管理员管理里面添加修改管理员账号
在http
参数配置中可以配置nginx
的http
项目,进行http
转发, 默认会给出几个常用配置, 其他需要的配置可自由增删改查. 可以勾选开启日志跟踪, 生成日志跟踪配置项, 每天0点时刻可生成上一天的日志分析报告. 由于日志文件access.log
文件过大, 默认只保留7天的log
文件, 但分析报告可一直保留.
在TCP参数配置中可以配置nginx
的steam
项目参数, 大多数情况下可不配.
在反向代理中可配置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
服务器了.
提供一键同步功能, 可以将某一台服务器的数据配置和证书文件同步到其他服务器中
找回密码
如果忘记了登录密码,可按如下教程找回密码
- 安装
sqlite3
命令
apt install sqlite3
- 读取
sqlite.db
文件
sqlite3 /home/nginxWebUI/sqlite.db
- 查找
admin
表
select * from admin;
- 退出
sqlite3
quit
后记
博主代码原地址:点我达