Nginx 权限问题 (404)
Nginx permission issue (404)
尝试使用 webroot 方法让我们加密设置,该方法创建并需要访问 ./.well-known/acme-challenge/ 目录中的文件。那里的所有内容(包括我添加的手动测试文件)都显示为 404。
有点疯狂,因为我尝试了以下变体:
location ~ /.well-known {
allow all;
}
location /.well-known/acme-challenge {
default_type text/plain;
}
location /.well-known {
try_files $uri $uri/ =404;
}
运气不好。我还检查了文件夹的权限,甚至设置为 777。我对设置 nginx 配置还很陌生,所以我确定有一个现有条件会导致它失败:
server{
listen 80;
server_name domain.com www.domain.com;
location / {
rewrite ^(.*)$ https://domain.com 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
指令来解析本地文件。
有关更多信息,请参阅 this document。
正如 Richard Smith 所说,需要一个 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;
}
尝试使用 webroot 方法让我们加密设置,该方法创建并需要访问 ./.well-known/acme-challenge/ 目录中的文件。那里的所有内容(包括我添加的手动测试文件)都显示为 404。
有点疯狂,因为我尝试了以下变体:
location ~ /.well-known {
allow all;
}
location /.well-known/acme-challenge {
default_type text/plain;
}
location /.well-known {
try_files $uri $uri/ =404;
}
运气不好。我还检查了文件夹的权限,甚至设置为 777。我对设置 nginx 配置还很陌生,所以我确定有一个现有条件会导致它失败:
server{
listen 80;
server_name domain.com www.domain.com;
location / {
rewrite ^(.*)$ https://domain.com 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
指令来解析本地文件。
有关更多信息,请参阅 this document。
正如 Richard Smith 所说,需要一个 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;
}