我有一个NodeJS Web服务,使用Nginx通过反向代理公开。我正在尝试从certbot续订SSL证书,并且为了更新,它会查看domain.com/.well-known
的ACME质询。但是,我配置节点服务的方式是根路径不提供文件,域的根由我的Web服务捕获和处理。我的实际公共webroot位于domain.com/public
,因此ACME的挑战实际上是domain.com/public/.well-known
所以有两种方法可以解决这个问题,我可以弄清楚如何告诉certbot查看domain.com/public/.well-known
而不是domain.com/.well-known
,或者弄清楚如何以某种方式"代理" domain.com/public/.well-known
至domain.com/.well-known
。
这是我的配置并且尝试重定向失败:
server {
listen 80;
listen 443 ssl;
client_max_body_size 50M;
ssl_certificate <path to cert>;
ssl_certificate_key <path to key>;
server_name domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /.well-known {
return 302 "http://{$host}/public{$request_uri}";
}
}
答案 0 :(得分:0)
如果您无法使用基于路径的(HTTP)域验证,则可以使用基于DNS的域验证。
certbot certonly --manual --preferred-challenges dns -d mydomain.com
这将提示您将TXT记录添加到域的DNS服务器。添加记录,然后等待几分钟,然后按ENTER继续。
将新证书复制到您想要的位置。