nginx 无法打开“/tmp”内的文件

nginx 无法打开“/tmp”内的文件

我正在尝试自动化 Let's Encrypt 证书更新过程。因此,我尝试使用 webroot 身份验证方法。但我遇到了一个障碍。为了找出问题所在,我做了以下事情。

在我的网站配置中,我为 acme 挑战添加了一个位置块:

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

diea 是 letsencrypt 脚本,将用于/tmp/lestencrypt存储必要的文件。但是,为了测试这一点,我创建了子文件夹letsencrypt并将其权限设置为 777。然后,我创建了一个名为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: x.x.x.x, server: domain.com, request: "GET /.well-known/acme-challenge/test HTTP/1.1", host: "domain.com"

我知道该文件存在,并且任何人都可以读取,现在我已将权限设置为 777。那么为什么 nginx 找不到它呢?

答案1

您拼错了 letsencrypt,这可能是您的问题。在您的描述中,您写的是“leSTencrypt”,但在日志中却是“leTSencrypt”。

您还可以查看此内容nginx unix 域套接字错误 看起来有些发行版出于安全原因对每个服务使用单独的 /tmp 目录。尝试将您的目录放在不同的地方,看看是否可行。例如,您可以创建另一个具有相同权限的“tmp”, mkdir /tmpnew chmod 1777 /tmpnew 然后使用它来查看会发生什么。

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

相关内容