試了上回分享 HTTPS Nginx Docker 懶人安裝法時許多讀者大推的方便選擇 - Nginx Proxy Manager

Nginx Proxy Manager 用 tabler 樣版 幫 Nginx 做了一個漂亮的網頁管理介面,對初學者來說,網頁操作比編輯 .conf 檔好上手。Nginx Proxy Manager 的另一大特色是它整合了 Let's Encrypt 憑證申請,不費吹灰之力就可以將網站轉為 HTTPS。除此之外,它還提供使用者管理、權限管控、稽核記錄... 等功能。簡單來說,是個讓 Nginx 更好管理的好工具。

Nginx Proxy Manager 有提供 Docker 容器,建個 docker-compose.yml 跑 sudo docker-compose up -d 即可無腦使用:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

管理介面在 81 Port,設定資料會保存在本機 ./data 目錄,設定資料使用 SQLite 資料庫保存,Let's Encrypt 憑證則存在 ./letsencrypt 資料夾。

使用瀏覽器連上 81 Port,一切順利的話會看到登入晝面,初始登入帳號、密碼為 admin@example.comchangeme,第一次登入後會被要求修改帳號及設定密碼:

建立 Reverse Proxy 的操作程序如下:

先輸入要綁定的網域名稱。我在同台機器跑了 ASP.NET Core 範例網站容器聽 VM 本機的 5000 Port,Forward Hostname / IP 建議填 VM 本機 IP 較省事(本例為 10.3.0.4),若要走 localhost/127.0.0.1 需修改 Nginx Proxy Manager 容器走 host 網路模式

Custom location 可設定子網站:使用 Nginx 將 ASP.NET Core 掛為子網站

SSL 部分勾選設定並輸入 Email 就好了。

原本 conf 檔常會有些 Proxy Header 設定需求,可以填在 Advanced:

你可以在 data/nginx/proxy_host/*.conf 找到 Proxy 設定,如果有手工設定過 Nginx 設定檔,對它內容應該不陌生,所有操作設定最後要轉成 conf 形式。

不出意外的話,這樣就能輕鬆用 HTTPS 連上網站了。

另外還有稽核記錄可查看設定修改記錄,十分貼心。

最後說說我的個人看法。Nginx Proxy Manager 很適用合日常管理或 Nginx 初學上手,提供了非常棒的使用體驗,但由於它需要多跑一個管理網站,會多耗用一些主機資源,用在雲端省錢小 VM 會增加非必要性負擔。另外,網頁管理介面多少會增被攻擊的表面積,需限制存取謹慎管理。

基於以上考量,在正式環境我應該還是會回歸用設定檔設定,節省主機資源,至於 Nginx 複雜難以駕御就歸因於管理者需提升本職學能,一切以精簡優先。


Comments

Be the first to post a comment

Post a comment


54 + 0 =