letsencrypt根目录提供了404位于泊坞窗
问题描述:
我有以下方式简单泊坞窗容器运行在Nginx的:letsencrypt根目录提供了404位于泊坞窗
docker service create --name nginx_proxy \
--mount type=bind,source=/opt/nginx/conf.d,target=/etc/nginx/conf.d \
--mount type=bind,source=/opt/nginx/webroot,target=/var/webroot \
--constraint 'node.role==manager' \
--publish 80:80 --publish 443:443 \
--network nginx-net \
nginx
创建的服务没有问题运行。我补充说,通过代理在同一网络(example.com.conf)其他服务的示例配置:(WWW)
server {
listen 80;
server_name example.com www.example.com;
location /.well-known/acme-challenge {
alias /var/webroot;
}
location/{
proxy_pass http://example_site:8080;
}
}
当我去example.com,我可以看到我的网站。由于我将host:/ opt/nginx/webroot装载到容器:/ var/webroot,我在/ opt/nginx/webroot中创建了一个名为“test.html”的文件(文件内容无关紧要)。
当我打开我的浏览器,键入:
http://example.com/.well-known/acme-challenge/test.html
我可以查看我添加到/ opt/nginx的/ Webroot公司的文件。但是,当我运行以下命令时certbot会抛出404:
certbot certonly --dry-run --webroot -w /opt/nginx/webroot -d example.com -d www.example.com
我在这里丢失了什么?据我了解,certbot在webroot目录下创建一个文件并尝试公开下载文件;但是,由于某种原因它没有看到我的文件。
答
我相信你的问题可能是由于对certbot命令中-w的误解。 -w或--webroot-path指定包含由Web服务器提供的文件的*目录。
Certbot将为此创建子文件夹以应对挑战,在您的情况下,certbot将创建/opt/nginx/webroot/.well-known/acme-challenge/
,但您的nginx配置指向webroot本身。
https://certbot.eff.org/docs/using.html#webroot
考虑更改
location /.well-known/acme-challenge {
alias /var/webroot;
}
到这样的事情
location /.well-known/acme-challenge {
alias /var/webroot/.well-known/acme-challenge;
}
您可以发布certbot和Nginx的日志? – Moema