nginx網頁設定工具
QQ技術交流群1: 1106758598
QQ技術交流群2: 560797506
官網網址: https://www.nginxwebui.cn
專業版網址: https://pro.nginxwebui.cn
Gitee: https://gitee.com/cym1102/nginxWebUI
Github: https://github.com/cym1102/nginxWebUI
影片教學: https://www.bilibili.com/video/BV18A4y1D7GZ
微信捐款二維碼
nginxWebUI是一款圖形化管理nginx配置得工具, 可以使用網頁來快速配置nginx的各項功能, 包括http協議轉發, tcp協議轉發, 反向代理, 負載平衡, 靜態html伺服器, ssl證書自動申請、續簽、配置等, 配置好後可一建生成nginx.conf檔, 同時可控制nginx使用此檔進行啟動與重載, 完成對nginx的圖形化控制閉環.
nginxWebUI也可管理多個nginx伺服器集群, 隨時一鍵切換到對應伺服器上進行nginx配置, 也可以一鍵將某台伺服器配置同步到其他伺服器, 方便集群管理.
nginx本身功能複雜, nginxWebUI並不能涵蓋nginx所有功能, 但能覆蓋nginx日常90%的功能使用配置, 平台沒有涵蓋到的nginx配置項, 可以使用自定義參數模板, 在conf文件中生成配置獨特的參數。
部署此專案後, 設定nginx再也不用上網各種搜尋設定碼, 再也不用手動申請和設定ssl憑證, 只需要在本專案中進行增刪改查就可方便的設定和啟動nginx。
本專案是基於solon的web系統, 資料庫使用sqlite, 因此伺服器上不需要安裝任何資料庫
本系統透過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配置文件.
專業版網址: https://pro.nginxwebui.cn
功能 | 專業版 | 開源版 |
---|---|---|
基本參數配置 | √ | √ |
http參數配置 | √ | √ |
反向代理配置 | √ | √ |
Stream參數配置 | √ | √ |
負載平衡配置 | √ | √ |
參數模板 | √ | √ |
靜態網頁上傳 | √ | √ |
密碼檔案管理 | √ | √ |
黑白名單IP | √ | √ |
證書申請 | √ | √ |
API介面文件 | √ | √ |
遠端管理 | √ | √ |
節點及分組統一管理 | √ | × |
節點設定檔統一同步 | √ | × |
節點資訊資料採集 | √ | × |
節點狀態統計 | √ | × |
快取配置 | √ | × |
nginx日誌採集 | √ | × |
nginx日誌查看 | √ | × |
nginx日誌統計 | √ | × |
nginx流量統計 | √ | × |
以Ubuntu作業系統為例,
注意:本專案需要在root使用者下執行系統指令,極容易被駭客利用,請一定修改密碼為複雜密碼
1.安裝java環境和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环境变量
JAVA_HOME : JDK安装目录
Path : JDK安装目录bin
重启电脑
2.下載最新版發行包jar
Linux: mkdir /home/nginxWebUI/
wget -O /home/nginxWebUI/nginxWebUI.jar https://gitee.com/cym1102/nginxWebUI/releases/download/4.2.5/nginxWebUI-4.2.5.jar
Windows: 直接使用浏览器下载 https://gitee.com/cym1102/nginxWebUI/releases/download/4.2.5/nginxWebUI-4.2.5.jar 到 D:/home/nginxWebUI/nginxWebUI.jar
有新版本只需要修改路徑中的版本即可
3.啟動程序
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/
參數說明(都是非必填)
--server.port 佔用埠, 預設以8080埠啟動
--project.home 專案設定檔目錄,存放資料庫文件,憑證文件,日誌等, 預設為/home/nginxWebUI/
--spring.database.type=mysql 使用其他資料庫,不填為使用本機sqlite資料庫,可選mysql
--spring.datasource.url=jdbc:mysql://ip:port/nginxwebui 資料庫url
--spring.datasource.username=root 資料庫用戶
--spring.datasource.password=pass 資料庫密碼
注意Linux指令最後加一個&號, 表示專案後台運行
本專案製作了docker映像, 支援x86_64/arm64/arm v7 平台,同時包含nginx和nginxWebUI在內, 一體化管理與運行nginx.
1.安裝docker容器環境
Ubuntu:
apt install docker.io
Centos:
yum install docker
2.拉取鏡像:
docker pull cym1102/nginxwebui:latest
或者
docker pull registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui:latest
3.啟動容器:
docker run -itd
-v /home/nginxWebUI:/home/nginxWebUI
-e BOOT_OPTIONS="--server.port=8080"
--net=host
--restart=always
cym1102/nginxwebui:latest
或者
docker run -itd
-v /home/nginxWebUI:/home/nginxWebUI
-e BOOT_OPTIONS="--server.port=8080"
--net=host
--restart=always
registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui:latest
注意:
啟動容器時請使用--net=host參數, 直接映射本機連接埠, 因為內部nginx可能使用任意一個連接埠, 所以必須映射本機所有連接埠.
容器需要映射路徑/home/nginxWebUI:/home/nginxWebUI, 此路徑下存放專案所有資料檔案, 包含資料庫, nginx設定檔, 日誌, 憑證等, 升級鏡像時, 此目錄可保證專案資料不遺失. 請注意備份.
-e BOOT_OPTIONS 參數可填入java啟動參數, 可以靠此項參數修改埠號
--server.port 佔用埠, 不填預設以8080埠啟動
另: 使用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"
network_mode: "host"
restart: always
或者
version: "3.2"
services:
nginxWebUi-server:
image: registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui:latest
volumes:
- type: bind
source: "/home/nginxWebUI"
target: "/home/nginxWebUI"
environment:
BOOT_OPTIONS: "--server.port=8080"
network_mode: "host"
restart: always
使用maven編譯打包
mvn clean package
使用docker建置映像
docker build -t nginxwebui:latest .
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 -Dfile.encoding=UTF-8 /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:8080 進入首頁
登入頁面, 第一次開啟會要求初始化管理員帳號
進入系統後, 可在管理員管理裡面新增修改管理員帳號
在http參數配置中可以設定nginx的http專案,進行http轉送, 預設會給出幾個常用設定, 其他需要的設定可自由增刪改查. 可以勾選開啟日誌追蹤, 產生日誌檔。
在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下
遠端伺服器管理, 如果有多台nginx伺服器, 可以都部署上nginxWebUI, 然後登入其中一台, 在遠端管理中新增其他伺服器的ip和使用者名稱密碼, 就可以在一台機器上管理所有的nginx伺服器了.
提供一鍵同步功能, 可以將某台伺服器的資料配置和憑證檔案同步到其他伺服器中
本系統提供http介面呼叫, 開啟http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看smart-doc介面頁面.
介面呼叫需要在http請求header中加入token, 其中token的取得需要先在管理員管理中, 開啟使用者的介面呼叫權限, 然後透過使用者名稱密碼呼叫取得token介面, 才能得到token
如果忘記了登入密碼或沒有儲存兩步驟驗證二維碼,可依下列教學重設密碼和關閉兩步驟驗證.
1.jar安裝方式, 執行命令
java -jar /home/nginxWebUI/nginxWebUI.jar --project.home=/home/nginxWebUI/ --project.findPass=true
--project.home 為專案檔案所在目錄, 使用docker容器時為映射目錄
--project.findPass 為是否列印使用者名稱密碼
運行成功後即可重設並列印出全部使用者名稱密碼並關閉兩步驟驗證
2.docker安裝方式, 先執行進入docker容器的指令, 其中{ID}為容器的id
docker exec -it {ID} /bin/sh
再執行指令
java -jar /home/nginxWebUI.jar --project.findPass=true
運行成功後即可重設並列印出全部使用者名稱密碼並關閉兩步驟驗證