试着让我们使用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; }