nginxWebUI


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

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM