.well-known / acme-challenge nginx 404错误

时间:2018-05-30 10:46:37

标签: nginx lets-encrypt

我正在尝试验证SSL证书的文件上传。 该文件必须为.well-known/acme-challenge/file

我已成功放置了上述文件,但在从网络http://weburl.com/.well-known/acme-challenge/file访问同一文件时,会出现404错误。 当我将相同的文件放在.well-known/中时,可以成功从路径http://weburl.com/.well-known/file访问该文件。

我的nginx配置:

server {
        listen 80;

        server_name weburl.com; 
        root /var/www/html;

        location ~ /.well-known {
                allow all;
        }

        location ~ /\.well-known/acme-challenge/ {
            allow all;
            root /var/www/html;
            try_files $uri =404;
            break;
        }
}

4 个答案:

答案 0 :(得分:0)

在第一种情况下,它会查找/var/www/html/.well-known/file

在第二种情况下,它会查找/var/www/html/file

您希望找到/var/www/html/.well-known/acme-challenge/file

这是因为您在root块中指定了location,这会更改从中读取文件的位置。

所以不要这样:

    location ~ /\.well-known/acme-challenge/ {
        allow all;
        root /var/www/html; # <================= Your problem, sir
        try_files $uri =404;
        break;
    }

你应该有这个:

    location ~ /\.well-known/acme-challenge/ {
        allow all;
        try_files $uri =404;
        break;
    }

无耻的插件:如果您只是进行简单的虚拟主机操作,并且您完全熟悉节点,则可能需要Greenlock

答案 1 :(得分:0)

一个可能的解决方案,就像在Solving known-acme-challenge unauthorized 404 error

中制作Dir Writable一样

答案 2 :(得分:0)

如果已在Plesk上安装了LetsEcnrypt模块,但是由于某些原因,您需要进行授权,例如。像我们一样手动手动操作example.com。

将您的授权码添加到
/var/www/vhosts/default/htdocs/.well-known/acme-challenge
而不是预期的(域webroot)
/var/www/vhosts/example.com/htdocs/.well-known/acme-challenge

要找到它,我必须检查/var/www/vhosts/system/example.com/conf/httpd.conf

答案 3 :(得分:0)

您必须授予www-data用户的权限。

sudo chown -R www-data:www-data .well-known