使用 nginx-proxy 和 acme-companion 來自動配置 SSL,nginx-proxy 和 acme-companion 是兩個獨立但常一起使用的工具,用於簡化在 Nginx 反向代理上設置和管理 SSL/TLS 憑證的過程。
介紹
- nginx-proxy:
nginx-proxy
是一個 Docker 容器,用於自動化 Nginx 反向代理配置。- 它可以自動檢測運行在同一主機上的其他 Docker 容器,並自動創建相應的 Nginx 反向代理配置。
- 通過簡單的環境變數設置,你可以指定哪些容器應該由 Nginx 代理,以及如何配置代理。
nginx-proxy
使得添加、刪除或修改反向代理配置變得簡單,而不需要手動編輯 Nginx 配置文件。
- acme-companion:
acme-companion
是另一個 Docker 容器,通常與nginx-proxy
一起使用,用於管理 SSL/TLS 憑證。- 它自動處理 Let’s Encrypt 等憑證頒發機構的 SSL/TLS 憑證申請和更新。
acme-companion
與nginx-proxy
配合使用,可以自動檢測需要 SSL/TLS 加密的容器,然後申請和安裝相應的憑證。- 它支持自動憑證更新,確保你的網站始終使用最新的有效憑證。
教學
步驟 1:下載 docker-compose.yml 檔案
在終端機中執行以下指令以下載 docker-compose.yml 檔案:
curl -LO <https://raw.githubusercontent.com/YiLin-Zhuang/nginx-proxy/master/docker-compose.yml>
步驟 2:建立網路
在終端機中執行以下指令以建立名為 “nginx-proxy” 的網路:
docker network create nginx-proxy
步驟 3:啟動 nginx-proxy
在終端機中執行以下指令以啟動 nginx-proxy:
docker-compose up -d
步驟 4:建立範例網站
在需要使用 SSL 的 docker-compose.yml 檔案中,加入 VIRTUAL_HOST
、LETSENCRYPT_HOST
和 networks
。以下範例設定以建立一個範例網站:
website:
image: nginx:alpine
container_name: website
restart: always
volumes:
- ./website:/usr/share/nginx/html:ro
environment:
# 將 "www.yourdomain.com,yourdomain.com" 替換為你的網域
- VIRTUAL_HOST=www.yourdomain.com,yourdomain.com
- LETSENCRYPT_HOST=www.yourdomain.com,yourdomain.com
# 加入 "nginx-proxy" 網路
networks:
default:
external:
name: nginx-proxy
這些步驟將幫助你設定一個 proxy server,並自動更新 SSL 證書。