差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:nginx_proxy_manager [2023/10/30 00:28] – [安裝設定 Nginx Proxy Manager(NPM) 當 Revers Proxy Server] jonathan | tech:nginx_proxy_manager [2024/09/11 10:38] (目前版本) – 強化 Proxy Host - NextCloud 的進階設定 jonathan | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | ====== Nginx Proxy Manager(NPM) 當 Revers Proxy Server(Docker) ====== |
* 環境 : [[tech/ | * 環境 : [[tech/ | ||
* 安裝的主機 IP : 192.168.11.231 | * 安裝的主機 IP : 192.168.11.231 | ||
行 5: | 行 5: | ||
===== 編輯與啟動 ==== | ===== 編輯與啟動 ==== | ||
* 編輯 yml 檔案 <cli> | * 編輯 yml 檔案 <cli> | ||
- | cd ~ | + | vi docker-compose.yml</ |
- | mkdir -p nginx-proxy-manager | + | |
- | cd nginx-proxy-manager | + | |
- | vi docker-compose.yml</ | + | |
- | version: ' | + | |
services: | services: | ||
- | | + | |
- | image: | + | image: jc21/ |
- | | + | |
+ | restart: always | ||
ports: | ports: | ||
- ' | - ' | ||
行 21: | 行 18: | ||
- ./ | - ./ | ||
- ./ | - ./ | ||
- | </cli> | + | |
+ | goaccess: | ||
+ | image: xavierh/ | ||
+ | container_name: | ||
+ | restart: always | ||
+ | ports: | ||
+ | - ' | ||
+ | environment: | ||
+ | - TZ=Asia/ | ||
+ | - SKIP_ARCHIVED_LOGS=False #optional | ||
+ | - DEBUG=False #optional | ||
+ | - BASIC_AUTH=False #optional | ||
+ | - BASIC_AUTH_USERNAME=user #optional | ||
+ | - BASIC_AUTH_PASSWORD=pass #optional | ||
+ | - EXCLUDE_IPS=127.0.0.1 #optional - comma delimited | ||
+ | - LOG_TYPE=NPM #optional - more information below | ||
+ | - ENABLE_BROWSERS_LIST=True #optional - more information below | ||
+ | - CUSTOM_BROWSERS=Kuma: | ||
+ | - HTML_REFRESH=5 #optional - Refresh the HTML report every X seconds. https:// | ||
+ | - KEEP_LAST=30 #optional - Keep the last specified number of days in storage. https:// | ||
+ | volumes: | ||
+ | - ./ | ||
+ | |||
+ | watchtower: | ||
+ | image: containrrr/ | ||
+ | container_name: | ||
+ | volumes: | ||
+ | - / | ||
+ | environment: | ||
+ | - TZ=Asia/ | ||
+ | - WATCHTOWER_SCHEDULE=0 0 4 * * * | ||
+ | - WATCHTOWER_CLEANUP=true | ||
+ | labels: | ||
+ | - " | ||
+ | restart: unless-stopped | ||
+ | </file> | ||
* 啟動服務 <cli> | * 啟動服務 <cli> | ||
docker compose up -d | docker compose up -d | ||
行 51: | 行 83: | ||
* 編輯 Proxy Host -> Advanced -> Custom Nginx Configuration 加入 < | * 編輯 Proxy Host -> Advanced -> Custom Nginx Configuration 加入 < | ||
- | ==== 2. 解決無法下載後端 NextCloud | + | ==== 2. 解決無法下載Proxy Host 超過 1GB 大檔案的設定 ==== |
- | * https:// | + | * Proxy Host 是 NextCloud 要提供檔案下載時發現預設下載檔案大小限制為 1GB |
+ | * 參考 - https:// | ||
+ | * 另外 NextCloud/ | ||
* 編輯 Proxy Host -> Advanced -> Custom Nginx Configuration 加入 <cli> | * 編輯 Proxy Host -> Advanced -> Custom Nginx Configuration 加入 <cli> | ||
- | proxy_set_header Host $host; | + | client_body_buffer_size 512k; |
- | proxy_set_header X-Forwarded-Proto $scheme; | + | proxy_read_timeout 86400s; |
- | 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; | client_max_body_size 0; | ||
- | location = / | + | if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS)$) |
- | return | + | return |
} | } | ||
- | location = / | + | </ |
- | return 301 $scheme:// | + | |
- | }</ | + | |
==== 3. 解決忘記登入資訊的做法 ==== | ==== 3. 解決忘記登入資訊的做法 ==== | ||
行 72: | 行 101: | ||
* login: [email protected] | * login: [email protected] | ||
* pass: changeme | * pass: changeme | ||
+ | |||
+ | ==== 4. 統計分析紀錄的做法 ==== | ||
+ | * 可使用 [[https:// | ||
+ | * 安裝方式可參考 [[tech/ | ||
+ | |||
+ | ==== 5. 安裝環境無 IPv6 的議題 ==== | ||
+ | * 參考 - https:// | ||
+ | * 無 IPv6 的環境啟動時 log 內會出現類似以下的錯誤訊息 <cli> | ||
+ | : | ||
+ | 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: ' | ||
+ | services: | ||
+ | app: | ||
+ | image: ' | ||
+ | restart: unless-stopped | ||
+ | ports: | ||
+ | - ' | ||
+ | - ' | ||
+ | - ' | ||
+ | environment: | ||
+ | - DISABLE_IPV6=true | ||
+ | volumes: | ||
+ | - ./ | ||
+ | - ./ | ||
+ | </ | ||
+ | |||
+ | ==== 6. 升級到 v2.11 後 Custom locations 無法運作議題 ==== | ||
+ | * 參考 - https:// | ||
+ | * 目前 Workaround 作法 | ||
+ | - 在 docker-compose.yml 目錄新增 _hsts_map.conf 檔案< | ||
+ | touch _hsts_map.conf | ||
+ | </ | ||
+ | - 修改 docker-compose.yml 內增加 <cli> | ||
+ | vi docker-compose.yml | ||
+ | </ | ||
+ | : | ||
+ | - ./ | ||
+ | </ | ||
+ | - 重新啟動 docker compose <cli> | ||
+ | docker compose up -d | ||
+ | </ | ||
+ | |||
+ | ==== 7. 匯出設定資料到另外一台主機匯入的作法 ==== | ||
+ | - 在來源主機匯出 <cli> | ||
+ | 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:/ | ||
+ | </ | ||
+ | - 在目標主機匯入 <cli> | ||
+ | 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 | ||
+ | </ | ||
===== 參考網址 ===== | ===== 參考網址 ===== |