将所有请求redirect到HTTPS,除了一个子目录

我试图从自签名证书转到我们的nginxnetworking服务器上encryption证书。

目前,我将所有请求redirecthttp/80https/443 ,它使用我刚刚创build的自签名证书。

现在 – 根据我的理解,Let's Encrypt向端口80发出请求(因为我使用的是certbotwebroot选项)。 这些请求被redirect,导致证书生成失败。

我试图用下面的服务器块来实现这个function,在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; } } 

但是https/443 /.well-known请求被redirect到https/443

如何将所有请求从http/80redirect到https/443 ,除了对/.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请求。