【问题标题】:Configure Nginx to reply to http://my-domain.com/.well-known/acme-challenge/XXXX配置Nginx回复http://my-domain.com/.well-known/acme-challenge/XXXX
【发布时间】:2018-02-25 05:26:44
【问题描述】:

我无法让 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/sn-ps/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。知道我缺少什么吗?

【问题讨论】:

标签: nginx lets-encrypt certbot


【解决方案1】:

选项root /var/www/letsencrypt/; 告诉nginx“这是基本目录”,所以最终路径将是/var/www/letsencrypt/.well-known/acme-challenge/

所以,你有两个选择:

  1. 改变你的路径,例如

    $ echo hi > /var/www/letsencrypt/.well-known/acme-challenge/hi
    
  2. 改变 nginx 的行为,所以 nginx 会将其视为别名:

    location ^~ /.well-known/acme-challenge/ {
      default_type "text/plain";
      rewrite /.well-known/acme-challenge/(.*) /$1 break;
      root /var/www/letsencrypt;
    }
    

别忘了 make killall -1 nginx 重新加载配置

【讨论】:

  • killall -1 是做什么的?
  • 而不是killall -1 nginx 来重新加载配置。您可以执行sudo nginx -t 来验证配置,如果返回成功,则执行sudo service Nginx restart
  • killall -1 发送信号SIGHUP,这意味着对于大多数守护进程(并非全部)“尽快重新加载您的配置”。所有正在运行的具有指定名称的守护进程(在我们的例子中为 nginx)将重新加载配置。当您有多个具有不同配置的 nginx(或任何其他守护程序)实例时,这是一个很好的做法。在我通常的设置中,nginx -tservice Nginx restart 什么都不做,因为 nginx 可以在不同的目录中,甚至不在$PATH 中,系统对此一无所知。
  • 但是你仍然想在重新加载之前测试你的配置,所以你需要知道这些二进制文件在哪里。循环访问二进制文件并调用 NGINX_BIN -t && NGINX_BIN -s reload 会更安全。
  • 使用systemctl restart nginx怎么样?
【解决方案2】:

似乎 Synology Nginx 配置现在有一个 acme-challenge 规则。把你的文件放到/var/lib/letsencrypt/.well-known/acme-challenge,不需要重新加载Nginx,配置不变。

详情请见/etc/nginx/nginx.conf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 2017-06-07
    • 2019-01-04
    • 2021-07-25
    • 2020-08-30
    • 2019-04-05
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多