Nginx权限问题(404)

试着让我们使用webroot方法encryption安装程序,该方法创build并需要访问./.well-known/acme-challenge/目录中的文件。 那里的所有东西(包括我添加的手动testing文件)都显示为404。

当我尝试了以下变体时会变得疯狂:

location ~ /.well-known { allow all; } location /.well-known/acme-challenge { default_type text/plain; } location /.well-known { try_files $uri $uri/ =404; } 

没有运气。 我也检查了文件夹的权限,甚至设置为777.我很新的设置nginxconfiguration,所以我敢肯定有一个现存的情况是抛弃它:

 server{ listen 80; server_name domain.com www.domain.com; location / { rewrite ^(.*)$ https://domain.com$1 permanent; } location ~ /.well-known { allow all; } } server { listen 0.0.0.0:443 ssl; root /var/www/domain.com/public_html; index index.php index.html index.htm; server_name domain.com www.domain.com; ssl on; ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; client_max_body_size 32m; } location ~ /.well-known { allow all; } } 

您的第一个server块需要root指令来解析本地文件。

请参阅此文档了解更多

正如理查德·史密斯所说,需要一个root指令。 它可以进入server块或location块。

请注意,即使root位于location块中,路径中也不应包含"/.well-known"

 location ~ /.well-known { allow all; root /var/www/domain.com/public_html; # NOT # root /var/www/domain.com/public_html/.well-known; }