Nginx 可視化神器!復雜配置一鍵生成,監(jiān)控管理一條龍!
nginxWebUI是一款圖形化管理nginx配置的工具,可以使用網(wǎng)頁來快速配置nginx的各項功能,包括http協(xié)議轉(zhuǎn)發(fā)、tcp協(xié)議轉(zhuǎn)發(fā)、反向代理、負載均衡、靜態(tài)html服務器、ssl證書自動申請、續(xù)簽、配置等。配置好后可一鍵生成nginx.conf文件,同時可控制nginx使用此文件進行啟動與重載,完成對nginx的圖形化控制閉環(huán)。
nginxWebUI也可管理多個nginx服務器集群, 隨時一鍵切換到對應服務器上進行nginx配置,也可以一鍵將某臺服務器配置同步到其他服務器,方便集群管理。
nginx本身功能復雜, nginxWebUI并不能涵蓋nginx所有功能,但能覆蓋nginx日常90%的功能使用配置,平臺沒有涵蓋到的nginx配置項,可以使用自定義參數(shù)模板,在conf文件中生成配置獨特的參數(shù)。
部署此項目后,配置nginx再也不用上網(wǎng)各種搜索配置代碼,再也不用手動申請和配置ssl證書,只需要在本項目中進行增刪改查就可方便的配置和啟動nginx。
技術說明
本項目是基于solon的web系統(tǒng),數(shù)據(jù)庫使用h2,因此服務器上不需要安裝任何數(shù)據(jù)庫。
本系統(tǒng)通過Let's encrypt申請證書,使用acme.sh腳本進行自動化申請和續(xù)簽,開啟續(xù)簽的證書將在每天凌晨2點進行續(xù)簽, 只有超過60天的證書才會進行續(xù)簽,只支持在linux下簽發(fā)證書。
添加tcp/ip轉(zhuǎn)發(fā)配置支持時,一些低版本的nginx可能需要重新編譯,通過添加–with-stream參數(shù)指定安裝stream模塊才能使用,但在ubuntu 18.04下,官方軟件庫中的nginx已經(jīng)帶有stream模塊,不需要重新編譯。本系統(tǒng)如果配置了tcp轉(zhuǎn)發(fā)項的話,會自動引入ngx_stream_module.so的配置項,如果沒有開啟則不引入,最大限度優(yōu)化ngnix配置文件。
jar安裝說明
以Ubuntu操作系統(tǒng)為例:
安裝java運行環(huán)境和nginx
Ubuntu:
apt update
apt install openjdk-11-jdk
apt install nginx
Centos:
yum install java-11-openjdk
yum install nginx
Windows:
下載JDK安裝包 https://www.oracle.com/java/technologies/downloads/
下載nginx http://nginx.org/en/download.html
配置JAVA運行環(huán)境
JAVA_HOME : JDK安裝目錄
Path : JDK安裝目錄\bin
重啟電腦
下載最新版發(fā)行包jar
Linux: mkdir /home/nginxWebUI/
wget -O /home/nginxWebUI/nginxWebUI.jar http://file.nginxwebui.cn/nginxWebUI-3.4.4.jar
Windows: 直接使用瀏覽器下載 http://file.nginxwebui.cn/nginxWebUI-3.4.4.jar 到 D:/home/nginxWebUI/nginxWebUI.jar
有新版本只需要修改路徑中的版本即可
啟動程序
Linux: nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &
Windows: java -jar -Dfile.encoding=UTF-8 D:/home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=D:/home/nginxWebUI/
參數(shù)說明(都是非必填)
- --server.port 占用端口, 默認以8080端口啟動
- --project.home 項目配置文件目錄,存放數(shù)據(jù)庫文件,證書文件,日志等, 默認為/home/nginxWebUI/
- --spring.database.type=mysql 使用其他數(shù)據(jù)庫,不填為使用本地h2數(shù)據(jù)庫,可選mysql
- --spring.datasource.url=jdbc:mysql://ip:port/nginxwebui 數(shù)據(jù)庫url
- --spring.datasource.username=root 數(shù)據(jù)庫用戶
- --spring.datasource.password=pass 數(shù)據(jù)庫
注意Linux命令最后加一個&號,表示項目后臺運行
Docker安裝說明
本項目制作了docker鏡像,支持 x86_64/arm64/arm v7 平臺,同時包含nginx和nginxWebUI在內(nèi),一體化管理與運行nginx。
安裝docker容器環(huán)境
Ubuntu:
apt install docker.io
Centos:
yum install docker
拉取鏡像:
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
注意:
- 啟動容器時請使用--net=host參數(shù),直接映射本機端口,因為內(nèi)部nginx可能使用任意一個端口,所以必須映射本機所有端口。
- 容器需要映射路徑/home/nginxWebUI:/home/nginxWebUI,此路徑下存放項目所有數(shù)據(jù)文件,包括數(shù)據(jù)、nginx配置文件、日志、證書等,升級鏡像時此目錄可保證項目數(shù)據(jù)不丟失,請注意備份。
- -e BOOT_OPTIONS 參數(shù)可填充java啟動參數(shù),可以靠此項參數(shù)修改端口號。--server.port 占用端口,不填默認以8080端口啟動。
- 日志默認存放在/home/nginxWebUI/log/nginxWebUI.log
另: 使用docker-compose時配置文件如下:
version: "3.2"
services:
nginxWebUi-server:
image: cym1102/nginxwebui:latest
volumes:
- type: bind
source: "/home/nginxWebUI"
target: "/home/nginxWebUI"
environment:
BOOT_OPTIONS: "--server.port=8080"
privileged: true
network_mode: "host"
編譯說明
使用maven編譯打包
mvn clean package
使用docker構建鏡像
docker build -t nginxwebui:latest .
添加開機啟動
編輯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
之后執(zhí)行
systemctl daemon-reload
systemctl enable nginxwebui.service
systemctl start nginxwebui.service
使用說明
打開 http://xxx.xxx.xxx.xxx:8080 進入主頁
圖片
登錄頁面,第一次打開會要求初始化管理員賬號
圖片
進入系統(tǒng)后,可在管理員管理里面添加修改管理員賬號
圖片
在http參數(shù)配置中可以配置nginx的http項目,進行http轉(zhuǎn)發(fā),默認會給出幾個常用配置,其他需要的配置可自由增刪改查??梢怨催x開啟日志跟蹤,生成日志文件。
圖片
在TCP參數(shù)配置中可以配置nginx的stream項目參數(shù),大多數(shù)情況下可不配。
圖片
在反向代理中可配置nginx的反向代理即server項功能,可開啟ssl功能,可以直接從網(wǎng)頁上上傳pem文件和key文件,或者使用系統(tǒng)內(nèi)申請的證書,可以直接開啟http轉(zhuǎn)跳https功能,也可開啟http2協(xié)議。
圖片
在負載均衡中可配置nginx的負載均衡即upstream項功能,在反向代理管理中可選擇代理目標為配置好的負載均衡
圖片
在html靜態(tài)文件上傳中可直接上傳html壓縮包到指定路徑,上傳后可直接在反向代理中使用,省去在Linux中上傳html文件的步驟
圖片
在證書管理中可添加證書,并進行簽發(fā)和續(xù)簽,開啟定時續(xù)簽后,系統(tǒng)會自動續(xù)簽即將過期的證書。
注意:證書的簽發(fā)是用的acme.sh的dns模式,需要配合阿里云的aliKey和aliSecret來使用。請先申請好aliKey和aliSecret
圖片
備份文件管理,這里可以看到nginx.cnf的備份歷史版本,nginx出現(xiàn)錯誤時可以選擇回滾到某一個歷史版本
圖片
最終生成conf文件,可在此進行進一步手動修改,確認修改無誤后,可覆蓋本機conf文件,并進行效驗和重啟,可以選擇生成單一nginx.conf文件還是按域名將各個配置文件分開放在conf.d下
圖片
遠程服務器管理,如果有多臺nginx服務器,可以都部署上nginxWebUI,然后登錄其中一臺,在遠程管理中添加其他服務器的ip和用戶名,就可以在一臺機器上管理所有的nginx服務器了。
提供一鍵同步功能,可以將某一臺服務器的數(shù)據(jù)配置和證書文件同步到其他服務器中
接口開發(fā)
本系統(tǒng)提供http接口調(diào)用,打開 http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看smart-doc接口頁面。
接口調(diào)用需要在http請求header中添加token,其中token的獲取需要先在管理員管理中,打開用戶的接口調(diào)用權限,然后通過用戶名調(diào)用獲取token接口,才能得到token
圖片
找回密碼
如果忘記了登錄密碼或沒有保存兩步驗證,可按如下教程找回密碼和關閉兩步驗證
停止nginxWebUI
pkill java
使用找回密碼參數(shù)運行nginxWebUI.jar
java -jar nginxWebUI.jar --project.home=/home/nginxWebUI/ --project.findPass=true
- --project.home 為項目文件所在目錄
- --project.findPass 為是否打印用戶名密碼
運行成功后即可打印出全部用戶名密碼并關閉兩步驗證