跳至主要内容

Nginx Proxy Manager:視覺化反向代理管理工具


什麼是 Nginx?​

Nginx(發音為 engine-x)是全球最主流的高效能 Web 伺服器與反向代理 (Reverse Proxy) 軟體。

  • 核心特色:採用非同步事件驅動架構,記憶體佔用極低且具備處理高併發連線的能力。
  • 在 Homelab 中的角色:扮演流量總機。當實體主機只有一個對外 Public IP 時,Nginx 能根據來訪的網域名稱(如 nas.domain.com 或 jellyfin.domain.com),將流量精準轉發至內網對應的伺服器與埠號,同時統一處理 HTTPS (SSL/TLS) 加密。

為什麼需要 Nginx Proxy Manager?​

原生 Nginx 需要透過終端機手動編寫設定檔 (nginx.conf),並自行使用 Certbot 申請與維護 SSL 憑證。

Nginx Proxy Manager (簡稱 NPM) 將 Nginx 與 Let's Encrypt 封裝為開箱即用的 Web 應用,讓使用者在瀏覽器介面中點選即可完成網域名稱轉發與自動 SSL 簽發。

NPM 儀表板


主要特點​

  1. 視覺化管理:透過 Web 介面新增、修改或刪除反向代理規則。
  2. 自動 SSL 憑證:整合 Let's Encrypt,支援 HTTP-01 與 DNS-01 挑戰(如 Cloudflare API),自動申請與定期續簽憑證。
  3. 存取控制 (Access Lists):支援設定 IP 白名單與 HTTP 基本密碼認證。
  4. 進階設定:支援 WebSockets、自訂 Nginx 參數配置與 TCP/UDP 串流轉發 (Streams)。

Proxy Hosts 清單


部署步驟 (Docker Compose)​

在 Ubuntu Server 終端機執行以下指令:

1. 建立目錄​

sudo mkdir -p /opt/stacks/npm/data /opt/stacks/npm/letsencrypt
cd /opt/stacks/npm

2. 建立 compose.yaml​

services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm
restart: unless-stopped
ports:
# 外部 HTTP / HTTPS 轉發埠號
- '80:80'
- '443:443'
# Web 管理介面埠號
- '81:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

3. 啟動服務​

sudo docker compose up -d

初始設定與使用​

1. 登入管理介面​

在瀏覽器打開:http://<VM_IP>:81

官方預設管理員帳號密碼:

  • Email:admin@example.com
  • Password:changeme

首次登入後需依照提示修改管理員信箱與密碼。


2. 新增 Proxy Host 轉發規則​

以將 ha.yourdomain.com 轉發至 Home Assistant (192.168.1.10:8123) 為例:

  1. 點選 Hosts -> Proxy Hosts -> Add Proxy Host。
  2. Details 設定:
    • Domain Names:ha.yourdomain.com
    • Scheme:http
    • Forward Hostname / IP:192.168.1.10
    • Forward Port:8123
    • 勾選 Block Common Exploits 與 Websockets Support。

新增 Proxy Host 設定介面

  1. SSL 設定:
    • SSL Certificate:選取 Request a new SSL Certificate。
    • 勾選 Force SSL(強制 HTTPS)與 HTTP/2 Support。
    • 勾選 I Agree to the Let's Encrypt Terms of Service。
  2. 點擊 Save 完成設定。

相關連結​