這是本文件的舊版!
安裝 Nginx Proxy Manager(NPM) 當 Revers Proxy Server(Docker)
- 安裝的主機 IP : 192.168.11.231
編輯與啟動
- 編輯 yml 檔案
cd ~ mkdir -p nginx-proxy-manager cd nginx-proxy-manager vi docker-compose.yml
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
- 啟動服務
docker compose up -d
進入網頁設定
- http://192.168.11.231:81 (預設帳號密碼 : [email protected] / changeme)
- 新增一個 Proxy Host :
- Hosts → Porxy Hosts → Add Proxy Host → Exp. www.ichiayi.com ichiayi.com
-
- 將產生的 API Token 設定到 dns_cloudflare_api_token
更版升級
- 只要執行以下命令就可以直接更版
docker compose pull && docker compose up -d
- 查看啟動過程 Logs
docker compose logs -f
問題處理
1. 使用 Cloudflare 當 CDN 時傳入實際用戶 IP 的設定
2. 解決無法下載後端 NextCloud 超過 1GB 大檔案的設定
- 編輯 Proxy Host → Advanced → Custom Nginx Configuration 加入
proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 16384m; client_max_body_size 0; location = /.well-known/carddav { return 301 $scheme://$host:$server_port/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host:$server_port/remote.php/dav; }
3. 解決忘記登入資訊的做法
- 主要就是還原成預設登入帳號密碼的作法
- login: [email protected]
- pass: changeme
4. 統計分析紀錄的做法
- 可使用 goaccess-for-nginxproxymanager 當簡易分析方案
5. 安裝環境無 IPv6 的議題
- 無 IPv6 的環境啟動時 log 內會出現類似以下的錯誤訊息
: app-1 | ❯ Starting nginx ... app-1 | nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) app-1 | ❯ Starting nginx ... app-1 | nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) :
- 只要在 docker-compose.yml 內的環境變數加上 DISABLE_IPV6=true 即可 Exp.
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' environment: - DISABLE_IPV6=true volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
6. 升級到 v2.11 後 Custom locations 無法運作議題
- 目前 Workaround 作法
- 在 docker-compose.yml 目錄新增 _hsts_map.conf 檔案
touch _hsts_map.conf
- 修改 docker-compose.yml 內增加
vi docker-compose.yml
: - ./_hsts_map.conf:/app/templates/_hsts_map.conf
- 重新啟動 docker compose
docker compose up -d
7. 匯出設定資料到另外一台主機匯入的作法
- 在來源主機匯出
cd nginx-proxy-manager tar -cvf data.tar data/ tar -cvf letsencrypt.tar letsencrypt/
- 將 data.tar 與 letsencrypt.tar 複製到目標主機 Exp.
scp *.tar 172.16.1.99:/root/
- 在目標主機匯入
mv *.tar nginx-proxy-manager/ cd nginx-proxy-manager docker compose down mv data data.org mv letsencrypt letsencrypt.org tar -xvf data.tar tar -xvf letsencrypt.tar docker compose up -d docker compose logs -f