我无法让nginx返回我放在/var/www/letsencrypt
中的文件。
nginx/sites-available/mydomain.conf
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name my-real-domain.com;
include /etc/nginx/snippets/letsencrypt.conf;
root /var/www/mydomain;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
我运行这个命令:certbot certonly --webroot -w /var/www/letsencrypt/ -d my-real-domain.com
但是certbot试图访问的页面总是404。
调试中
$ echo hi > /var/www/letsencrypt/hi
$ chmod 644 /var/www/letsencrypt/hi
现在我应该能够curl localhost/.well-known/acme-challenge/hi
,但这不起作用。还是404知道我漏掉了什么吗
3条答案
按热度按时间nwo49xxi1#
选项
root /var/www/letsencrypt/;
告诉nginx“这是基本目录”,因此最终路径将是/var/www/letsencrypt/.well-known/acme-challenge/
。所以,你有两个选择:
1.改变你的路径,例如,
1.更改nginx的行为,这样nginx会将其视为别名:
不要忘记make
killall -1 nginx
to reload config5gfr0r5j2#
看来Synology Nginx配置现在有了一个针对acme-challenge的规则。把你的文件放在
/var/lib/letsencrypt/.well-known/acme-challenge
中,不需要重新加载Nginx,因为配置保持不变。详情请参见
/etc/nginx/nginx.conf
。gopyfrb33#
这是因为你使用root而不是别名,我有这个作为工作解决方案: