Nginx

將所有請求重定向到 HTTPS,除了一個子目錄

  • May 12, 2017

我正在嘗試從自簽名證書轉移到我的 nginx 網路伺服器上的 Let’s Encrypt 證書。

目前,我將所有請求重定向到http/80to https/443,它使用我不久前創建的自簽名證書。

現在 - 據我了解,Let’s Encrypt 向埠 80 發出請求(因為我使用的是webroot選項certbot)。這些請求被重定向,導致證書生成失敗。

我嘗試使用以下伺服器塊來實現這一點,監聽埠 80:

server {
       listen  80;     
       server_name     sub.domain.tld;
       server_tokens   off;


       location /.well-known {
               root /var/www/letsencrypt;
       }

       location / {
               return 301 https://$host$request_uri;
       }
}

但無論如何,請求都會/.well-known被重定向到。https/443

我如何將所有請求從http/80to重定向https/443,除了請求 to /.well-known/

試試這個:

server {
   listen  80;     
   server_name     sub.domain.tld;
   server_tokens   off;

   root /var/www/letsencrypt;

   location /.well-known {
       try_files $uri $uri/ =404;
   }

   location / {
       return 301 https://$host$request_uri;
   }
}

由於您的虛擬伺服器中沒有try_files條目,因此它不知道如何處理來自/.well-known.

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