Nginx

帶有 https 的 nginx 負載均衡器,讓我們加密證書更新

  • April 22, 2018

我有一個使用 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;
 }
}

引用自:https://serverfault.com/questions/908769