nginx不能在`/ tmp`里面打开一个文件

我试图自动化让我们encryption证书更新过程。 所以我试图使用webroot身份validation方法。 但是我碰到了一个绊脚石。 在试图隔离发生了什么问题,这是我所做的。

在我的网站的configuration,我已经添加了一个位置块的极致挑战:

location /.well-known/acme-challenge { default_type "text/plain"; alias /tmp/letsencrypt; } 

作为letsencrypt脚本的diea将使用/tmp/lestencrypt存储必要的文件。 但是,为了testing这个,我创build了子文件夹letsencrypt ,并将其编译为777.然后创build一个名为test的文件,内容为“testing”,并将其修改为777。

现在,如果我尝试访问domain.com/.well-known/acme-challenge/test我会得到一个404响应。 看看我的错误日志,我看到了这一行:

 2015/12/11 17:38:06 [error] 26593#0: *11 open() "/tmp/letsencrypt/test" failed (2: No such file or directory), client: xxxx, server: domain.com, request: "GET /.well-known/acme-challenge/test HTTP/1.1", host: "domain.com" 

我知道这个文件存在,它应该是任何人都可读的,现在我已经把权限设置为777.那么为什么不能find它?

你拼错letsencrypt,这可能是你的问题。 在你的描述中,你写了“lestencrypt”,并在日志里写了“leTSencrypt”。

你也可以检查这一个nginx的unix域套接字错误看起来像一些发行版使用单独的/ tmp目录为每个服务的安全原因。 尝试把你的目录在不同的地方,看看它是否会工作。 您可以使用相同的权限创build另一个“tmp”,例如mkdir /tmpnew chmod 1777 /tmpnew然后使用它来查看会发生什么情况。

我能想到的另一个原因是你的nginx运行在chrooted环境中。