Nginx Proxy Manager 基於 Nginx 的一個非常好用的反向代理工具,擁有圖形界面,可以肯方便的為無法設置 SSL 的應用添加反向代理


# 安裝 Nginx Proxy Manager

官方提供了 docker 鏡像,安裝起來非常簡單
拉取 Nginx Proxy Manager 官方的 docker 鏡像

docker pull jc21/nginx-proxy-manager

啟動 Nginx Proxy Manager 容器

docker run -d \
    --name=nginx-proxy-manager \
    -p 81:81 \
    -p 80:80 \
    -p 443:443 \
    jc21/nginx-proxy-manager

81 : Nginx Proxy Manager 管理頁面的連接埠,使用瀏覽器打開 http://IP:81 即可進入
80 : http 連接埠
443 : https 連接埠

安裝就這麼簡單
記得在防火牆放行相應的連接埠

# Nginx Proxy Manager 管理

默認賬戶 admin@example.com
默認密碼 changeme
第一次登錄會要求進行一些簡單的設置,包括更改賬戶和密碼

# 上傳證書

由於沒有獨立 IP,並且 Nginx Proxy Manager 還未支援 Let's Encrypt 使用 DNS 驗證,所以只能將手動申請證書並上傳,至於如何手動申請證書這裡不做討論

  1. 選擇上方的 SSL Certificates ,再點選下方的 Add Certificates ,之後選擇 Custom
    01

  2. 選擇並上傳證書
    Name : 這個隨意,用於自己識別而已,必填
    Certificate Key : 證書密鑰,必填
    Certificate : 證書,必填
    Intermediate Certificate : CA 證書,選填
    選擇好後按 Save 保存
    02

# 設置反向代理

  1. 進入 Nginx Proxy Manager 主頁面,選擇 Proxy Hosts
    03

  2. 填寫相關資訊
    Domain Names : 填寫需要反代的域名
    Scheme : 選擇來源的協議
    Forward Hostname / IP : 填寫來源的主機名或 IP
    Forward Port : 填寫來源的連接埠
    Cache Assets : 是否啟用緩存
    Block Common Expoits : 阻止常見的漏洞
    Websockets Support : 是否支援 Websockets
    Access List : 權限列表選擇,可以給反代的網頁設置賬戶密碼,驗證通過後才能正常打開

建議將 Websockets SupportBlock Common Expoits 開啟, Cache Assets 按需求選擇是否啟用
04

  1. 選擇 SSL 證書
    點擊 SSL 選項,在 SSL Certificate 中選擇使用的證書
    Force SSL : 強制啟用 SSL
    HTTP/2 Support : 支援 HTTP/2
    HSTS Enable : 啟用 HSTS
    HSTS Subdomains : 支援 HSTS 子域
    都是提高安全性的,全部啟用不會出現問題那就全部啟用
    05

填寫好後記得按 Save 保存

# 重定向

從一個域名轉跳到另一個域名,跟設置反代相似
06

# 連接埠轉發

將 TCP 或 UDP 數據包(需要開啟 UDP 支援)全部轉發出去,跟設置反代相似
07

# 404 頁面

將域名的訪問導向一個 404 或其他頁面,跟設置反代相似
08

# 設置權限列表(權限驗證)

  1. 進入 Nginx Proxy Manager 主頁面,選擇 Access List ,再點選 Add Access List
    09

  2. Details
    填寫權限列表的名稱
    Satisfy Any : 相當於啟用或關閉
    Pass Auth Host : 將驗證傳遞給後方的主機,按需求開啟
    10

  3. Authorization
    設置用於驗證使用的賬戶名和密碼
    11

  4. Access
    allow : 相當於白名單,在此填入的 IP 段都不需要驗證即可直接訪問
    deny : 相當於黑名單,在此填入的 IP 段都需要驗證
    12
    只對獨立 IP 生效,對私有 IP 無效