使用 nginx-proxy 和 acme-companion 來自動配置 SSL,nginx-proxy 和 acme-companion 是兩個獨立但常一起使用的工具,用於簡化在 Nginx 反向代理上設置和管理 SSL/TLS 憑證的過程。

介紹

  1. nginx-proxy
    • nginx-proxy 是一個 Docker 容器,用於自動化 Nginx 反向代理配置。
    • 它可以自動檢測運行在同一主機上的其他 Docker 容器,並自動創建相應的 Nginx 反向代理配置。
    • 通過簡單的環境變數設置,你可以指定哪些容器應該由 Nginx 代理,以及如何配置代理。
    • nginx-proxy 使得添加、刪除或修改反向代理配置變得簡單,而不需要手動編輯 Nginx 配置文件。
  2. acme-companion
    • acme-companion 是另一個 Docker 容器,通常與 nginx-proxy 一起使用,用於管理 SSL/TLS 憑證。
    • 它自動處理 Let’s Encrypt 等憑證頒發機構的 SSL/TLS 憑證申請和更新。
    • acme-companionnginx-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_HOSTLETSENCRYPT_HOSTnetworks。以下範例設定以建立一個範例網站:

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 證書。

github 連結