1

我现在头发都掉光了。

我正在尝试将 Certbot (letsencrypt) 设置到我的服务器。但我什至无法通过以下方式提供网址http://myapp.com/.well-known/acme-challenge/myfile

namei -om /var/www/certbot/.well-known/acme-challenge/myfile 
f: /var/www/certbot/.well-known/acme-challenge/myfile
 drwxr-xr-x 1000 1000 /
 drwxr-xr-x root root var
 drwxr-xr-x root root www
 drwxr-xr-x root root certbot
 drwxr-xr-x root root .well-known
 drwxr-xr-x root root acme-challenge
 -rw-r--r-- root root myfile

和以下 nginx 配置:

upstream myapp {
  server                localhost:3000;
}

server {
  listen                80;
  server_name           myapp.com;

  location /.well-known/acme-challenge {
    default_type "text/plain";
    root /var/www/certbot;
  }

  location / {
    proxy_pass          http://myapp;
    proxy_read_timeout  90;
  }

}

但网址不可用:

curl -I http://myapp.com/.well-known/acme-challenge/myfile
HTTP/1.1 404 Not Found
Server: nginx/1.6.2
Date: Tue, 31 May 2016 17:40:23 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 47
Connection: keep-alive
X-Powered-By: Express
X-Content-Type-Options: nosniff

我究竟做错了什么 ???请帮我!

4

2 回答 2

1

我认为您应该引用该位置,因为它包含一个点。像这样:

location '/.well-known/acme-challenge/' {
   # ...
}

我对此并不完全确定,但我见过其他人这样做,它似乎对我有用。

于 2016-06-05T11:28:00.703 回答
0

我终于找到了解决方案:

nginx 配置站点在/etc/nginx/sites-available但不在/etc/nginx/sites-enabled.

我确实创建了从前者到后者的链接,但它不是符号链接(缺少 中的-s选项ln /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled)。

我仍然不理解非符号链接的用例,但就我而言,这就是问题所在。

于 2016-06-05T17:41:24.493 回答