我有一个简单的 docker 容器以下列方式运行:
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):
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;
}
}
当我访问 (www.)example.com 时,我可以看到我的网站。
由于我将主机:/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 目录中创建了一个文件并尝试公开下载该文件;但是,由于某种原因,它看不到我的文件。