轉(zhuǎn)載于:https://laosu.ml/2022/01/17/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8nginx-proxy-manager/
Nginx Proxy Manager 實際上就是一個帶前端管理界面的 Nginx 服務(wù)器。
一直以來讲衫,老蘇都是使用群暉內(nèi)置的反向代理,雖然很方便易用要销,但在某些情況下顯得并不靈活蛉艾。比如老蘇打算安裝 Authelia,需要修改 nginx 轉(zhuǎn)發(fā)規(guī)則,必須通過 SSH 登錄后找到相應(yīng)的文件修改府适,這一點上不如 nginx-proxy-manager羔飞,當你習慣后,你會發(fā)現(xiàn) npm 的優(yōu)點遠不止這點檐春。
什么是 Nginx Proxy Manager 逻淌?
Nginx Proxy Manager 是用于管理 Nginx 代理主機的 Docker 容器,具有簡單疟暖、強大的界面恍风。它使您可以輕松地轉(zhuǎn)發(fā)到您在家里或其他地方運行的網(wǎng)站,包括免費的 SSL誓篱,而無需對 Nginx 或 Letsencrypt 了解太多朋贬。
安裝
數(shù)據(jù)庫
首先在群暉套件中心安裝MariaDB 10、phpMyAdmin
通過 phpMyAdmin
在 MariaDB 10
中新建用戶 npm
窜骄,創(chuàng)建同名的庫 npm
并授予所有權(quán)限锦募。
老蘇試過 MariaDB 5,寫數(shù)據(jù)庫有問題邻遏,表現(xiàn)為登錄不成功糠亩,顯示 Bad Gateway 錯誤
安裝鏡像
在群暉上以 Docker 方式安裝。
在注冊表中搜索 nginx-proxy-manager 准验,選擇第一個 jc21/nginx-proxy-manager赎线,版本選擇 latest。
卷
在 docker 文件夾中糊饱,創(chuàng)建一個新文件夾垂寥,并將其命名為 npm,再建 2 個子目錄另锋,分別命名為 data 和 letsencrypt
文件夾 | 裝載路徑 | 說明 |
---|---|---|
docker/npm/data | /data | 存放數(shù)據(jù) |
docker/npm/letsencrypt | /etc/letsencrypt | 存放自動申請證書 |
端口
端口不沖突就行滞项,不確定的話可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口號
本地端口 | 容器端口 |
---|---|
52443 | 443 |
52080 | 80 |
52081 | 81 |
環(huán)境
可變 | 值 |
---|---|
DB_MYSQL_HOST | 群暉主機 IP 地址 |
DB_MYSQL_PORT | 默認為 3306,MariaDB 10為3307 |
DB_MYSQL_USER | 根據(jù)前面的設(shè)置,數(shù)據(jù)庫用戶為 npm |
DB_MYSQL_PASSWORD | 數(shù)據(jù)庫用戶 npm 的密碼 |
DB_MYSQL_NAME | 根據(jù)前面的設(shè)置夭坪,庫名為 npm |
運行
在瀏覽器中輸入 http://群暉IP:2081 就能看到主界面
默認的賬號:admin@example.com文判,密碼:changeme
登錄后可以編輯用戶信息
之后是密碼
證書
進入主菜單的 SSL Certificates
Add SSL Certificate 有兩種方式,一種是在線申請室梅,另一種是添加已有證書
在線申請和我們在『 免費的泛域名https證書自動續(xù)期 』一文中介紹的非常類似戏仓,需要選擇 DNS
解析服務(wù)提供商,以及填寫 token
等參數(shù)
老蘇因為已經(jīng)配置了 Certbot 并實現(xiàn)了自動續(xù)期亡鼠,所以只需要導(dǎo)入現(xiàn)有證書就可以了赏殃,Name 老蘇用了域名,這樣比較容易識別
私鑰 Certificate Key 對應(yīng) privkey.pem
證書 Certificate 對應(yīng) fullchain.pem
中間證書 Intermediate Certificate 對應(yīng) chain.pem
上傳成功后拆宛,證書存放在 /data/custom_ssl/ 目錄中以 npm-1 嗓奢、 npm-2 等子目錄保存
反向代理
進入主菜單的 Hosts
以將 http://192.168.0.197:5000 映射到 https://nas.laosu.ml 為例
-
因為是 Docker 容器方式運行的,所以即便是本機也不要用 localhost浑厚,一定要用 IP
-
默認 Cache Aeeets股耽、Block Common Exploits根盒、Websocket Support 建議都勾上
選擇 SSL 證書
因為準備用 https 協(xié)議訪問,所以必須勾選 Force SSL
其他的 HTTP/2 和 HSTS 和群暉內(nèi)置的是一樣的物蝙,可根據(jù)需要勾選炎滞,沒啥問題的話老蘇建議都勾上
小結(jié)
為什么要另外安裝 nginx proxy manager
而不是用群暉內(nèi)置的反向代理的原因,老蘇在一開始就講了诬乞,裝完之后老蘇還發(fā)現(xiàn)了幾個優(yōu)點:
- 不用再依賴群暉册赛,這使得老蘇將來可以很方便的切換到其他平臺
- 即便是
DSM6.1.7
也不再有 『 HomeAssistant設(shè)置https訪問后的問題 』一文中的情況,只要簡單勾選Websockets support
即可震嫉,而不需要各種修改 - 速度快森瘪,也許只是心理感覺
參考文檔
Nginx Proxy Manager
地址:https://nginxproxymanager.com/jc21/nginx-proxy-manager: Docker container for managing Nginx proxy hosts with a simple, powerful interface
地址:https://github.com/jc21/nginx-proxy-managerNGINX proxy manager
地址:https://www.blackvoid.club/nginx-proxy-manager/Running authelia on a non standard HTTPs port. Base href is not valid. · Issue #2765 · authelia/authelia
地址:https://github.com/authelia/authelia/issues/2765