我index.html
在两个地方都有一个文件/home/ubuntu/web/build
,/var/www/html
没有其他复杂的规则。
然而只root /var/www/html
有效!
# root /home/ubuntu/web/build; fails!
root /var/www/html; # works!
index index.html;
location / {
autoindex on;
try_files $uri $uri/ =404;
}
以下是权限
f: /var/www/html
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
drwxr-xr-x root root html
f: /home/ubuntu/web/build
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-x--- ubuntu ubuntu ubuntu
drwxrwxr-x ubuntu ubuntu web
drwxrwxr-x ubuntu ubuntu build
答案1
Nginx 以nginx
用户身份运行,因此它应该对路径中的所有目录具有读取权限。由用户和组/home/ubuntu
拥有,因此第三组权限(因为用户不在组中)描述对目录的访问。有两种解决方案:ubuntu
ubuntu
nginx
ubuntu
- 为所有用户添加对目录的读取权限
/home/ubuntu
(不推荐) nginx
将用户添加到ubuntu
组sudo usermod -aG ubuntu www-data
usermod
:该命令用于修改用户账户属性。aG
:-a 标志将用户附加到组,但不将其从当前组中删除。该
-G
标志指定您要添加用户的组。ubuntu:将其替换为您要添加 Nginx 用户的组的名称。www-data
:这是大多数 Ubuntu 系统上的 Nginx 用户名。如果您的系统使用不同的 Nginx 用户名,请进行相应替换。