Certbot:无法将nginx配置为webroot

时间:2016-05-31 17:48:58

标签: nginx lets-encrypt certbot

我现在失去了所有头发。

我正在尝试将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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我终于找到了解决方案:

nginx配置网站位于/etc/nginx/sites-available但不在/etc/nginx/sites-enabled

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

我仍然不明白链接的用例不是象征性的,但在我的情况下就是问题。