精品軟體與實用教程
Nginx設定視覺化設定檔生成,nginxWebUI圖形化管理設定工具
Nginx設定 nginxWebUI 是一款視覺化圖形化管理nginx設定工具,可以使用網頁來快速設定nginx的各項功能,包括http協定轉送、tcp協定轉送、反向代理、負載平衡、靜態html伺服器、ssl憑證自動申請、續約、設定等。配置好後可一鍵生成nginx.conf文件,同時可控制nginx使用此文件進行啟動與重載,完成對nginx的圖形化控制閉環。
nginxWebUI也可管理多個nginx伺服器集群, 隨時一鍵切換到對應伺服器上進行nginx配置,也可以一鍵將某台伺服器配置同步到其他伺服器,方便集群管理。
nginx本身功能複雜, nginxWebUI並不能涵蓋nginx所有功能,但能涵蓋nginx日常90%的功能使用配置,平台沒有涵蓋到的nginx配置項,可以使用自訂參數模板,在conf檔案中產生配置獨特的參數。
部署此專案後,設定nginx再也不用上網各種搜尋設定代碼,再也不用手動申請和設定ssl證書,只需要在本專案中進行增刪改查就可方便的設定和啟動nginx。
Github專案網站:https://github.com/cym1102/nginxWebUI
nginxWebUI官網:https://www.nginxwebui.cn/
什麼是Nginx
Nginx是非同步框架的網頁伺服器,也可以用作反向代理、負載平衡器和HTTP快取。該軟體由俄羅斯程式設計師伊戈爾·賽索耶夫開發並於2004年首次公開發布。 2011年成立同名公司以提供支援服務。 2019年3月11日,Nginx公司被F5網路公司以6.7億美元收購。 Nginx是免費的開源軟體,根據類BSD許可證的條款發布。
nginx官網:https://nginx.org/
Nginx設定nginxWebUI 技術文檔
本專案是基於solon的web系統,資料庫使用h2,因此伺服器上不需要安裝任何資料庫。
本系統透過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安裝說明
安裝java運行環境和nginx,以Ubuntu作業系統為例:
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
- 重新啟動電腦
下載nginxWebUI 最新版發行包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
有新版本只需要修改路徑中的版本即可
啟動nginxWebUI 程式
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 使用其他資料庫,不填為使用本機h2資料庫,可選擇mysql
--spring.datasource.url=jdbc:mysql://ip:port/nginxwebui 資料庫url
--spring.datasource.username=root 資料庫用戶
--spring.datasource.password=pass 資料庫
注意Linux指令最後加一個&號,表示專案後台運行
docker安裝說明
本專案製作了docker映像,支援x86_64/arm64/arm v7 平台,同時包含nginx和nginxWebUI在內,一體化管理與運行nginx。
安裝docker容器環境:
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參數,直接映射本機端口,因為內部nginx可能使用任意一個端口,所以必須映射本機所有端口。
容器需要映射路徑/home/nginxWebUI:/home/nginxWebUI,此路徑下存放專案所有資料文件,包括資料、nginx設定檔、日誌、憑證等,升級鏡像時此目錄可保證專案資料不會遺失,請注意備份。
-e BOOT_OPTIONS 參數可填入java啟動參數,可靠此項參數修改連接埠號碼。 --server.port 佔用端口,不填預設以8080端口啟動。
日誌預設存放在/home/nginxWebUI/log/nginxWebUI.log
另: 使用docker-compose時設定檔如下:
version: "3.2" services: nginxWebUi-server: image: "3.2" services: nginxWebUi-server: image: cym1102/nginxwebui:latest volumes: - type: bind source: "/home/nginxWebUI" target: "/home/nginxWebUI" environment: BOOT_leg -lioo 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/nginxWebUIm-KstartinxWebUI.
之後執行
systemctl daemon-reload systemctl enable nginxwebui.service systemctl start nginxwebui.service
nginx配置nginxwebui 使用說明
影片教學: https://www.bilibili.com/video/BV18A4y1D7GZ
演示地址: http://test.nginxwebui.cn:7070
使用者名稱: admin
密碼: admin
打開 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和aliSecretret
備份檔案管理, 這裡可以看到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.停止nginxWebUI
pkill java
2.使用找回密碼參數執行nginxWebUI.jar
java -jar nginxWebUI.jar --project.home=/home/nginxWebUI/ --project.findPass=true
--project.home 為專案檔案所在目錄
--project.findPass 為是否列印使用者名稱密碼
運行成功後即可列印出全部使用者名稱密碼並關閉兩步驟驗證
推薦openstar