Nginx 无法从主目录提供静态文件

Nginx 无法从主目录提供静态文件

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拥有,因此第三组权限(因为用户不在组中)描述对目录的访问。有两种解决方案:ubuntuubuntunginxubuntu

  • 为所有用户添加对目录的读取权限/home/ubuntu(不推荐)
  • nginx将用户添加到ubuntu
    • sudo usermod -aG ubuntu www-data
      • usermod:该命令用于修改用户账户属性。

      • aG:-a 标志将用户附加到组,但不将其从当前组中删除。

      • -G标志指定您要添加用户的组。ubuntu:将其替换为您要添加 Nginx 用户的组的名称。

      • www-data:这是大多数 Ubuntu 系统上的 Nginx 用户名。如果您的系统使用不同的 Nginx 用户名,请进行相应替换。

相关内容