我正在尝试从自签名证书转移到我的 nginx 网络服务器上的 Let's Encrypt 证书。
目前,我将所有请求重定向到http/80
to 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/80
to重定向https/443
,除了请求 to /.well-known/
?
尝试这个:
由于您的虚拟服务器中没有
try_files
条目,因此它不知道如何处理来自/.well-known
.我遇到了同样的问题,但需要一个稍微不同的解决方案。
这是我的服务器块的样子
事实证明,这是 NGINX 称为Incorrect
return
context的“陷阱” 。我明白他们的意思,但措辞使它有点混乱。相反,我会将行为描述为
按照建议将其包装
return
在一个location /
块中解决了这个问题。