Nginx
帶有 https 的 nginx 負載均衡器,讓我們加密證書更新
我有一個使用 nginx 設置的小型 Linux VPS 實例,將請求作為負載均衡器代理到多個應用程序伺服器。
所有流量都進入代理到這些上游伺服器的https://app.example.com 。負載均衡器的範例 nginx 配置:
upstream app_servers { server app-1.example.com; server app-2.example.com; } server { listen 80; listen 443 ssl; include snippets/ssl-app.example.com.conf; include snippets/ssl-params.conf; server_name app.example.com; root /var/www/html; location / { # Set proxy headers proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://app_servers; } location ~ /.well-known { allow all; } }
我在設置代理之前設置了letsencrypt並獲得了app.example.com的證書,現在我無法弄清楚如何配置nginx以將所有內容代理到上游app_servers,除了/.well-known,因此certbot可以在本地在執行此 nginx 負載均衡器的伺服器上更新 SSL 證書。關於如何將 app.example.com/.well-known/ 路由到 letencrypt certbot 可以在續訂期間成功使用和命中的本地路徑的任何建議?
更新確保 .well-known 存在於 /var/www/html (Debian) 並在 conf 中設置 root 允許 certbot 正確更新。nginx conf 片段已更新以反映這一點。
將 root 設置為 Debian 上的預設 nginx webroot,
/var/www/html
其中 certbot 最初配置為指向 .well-known 文件夾解決了該問題。upstream app_servers { server app-1.example.com; server app-2.example.com; } server { listen 80; listen 443 ssl; include snippets/ssl-app.example.com.conf; include snippets/ssl-params.conf; server_name app.example.com; root /var/www/html; location / { # Set proxy headers proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://app_servers; } location ~ /.well-known { allow all; } }