设置 nginx 以提供来自子目录的文件

Nic*_*hov 7 webserver nginx

我正在建立一个非常简单的文件服务器系统。我安装 nginx 并将其根目录设置为/home以使其从用户的主目录提供文件。

但是,当我尝试http://12.34.56.78/user1/testfile.bin使用浏览器下载文件时,它显示“403 Forbidden”。http://12.34.56.78/但是,当我连接到浏览器时,它会显示我放入的默认索引页面/home/

如何让 nginx 从用户目录提供文件?例如

/home/user1

/home/user2

另外,如果我想排除根目录

/home

和系统文件

.bash_history .bash_profile .bashrc (例如,名称以点开头的所有文件)

从正在提供的文件中?

Spa*_*ack 15

Nginx 无权读取用户文件。将所有用户文件放在 Web 上是一个非常糟糕的主意。

一个更好的主意是只用户主目录中的专用目录提供服务

www在访问时为每个用户文件夹中的文件夹提供服务/<USER>,请使用以下位置:

location ~ ^/(.+?)(/.*)?$ {
  alias /home/$1/www$2;
  index  index.html index.htm;
  autoindex on;
}
Run Code Online (Sandbox Code Playgroud)

您还应该允许 Nginx 访问此目录。

$ chmod 0755 /home/$USER/www
Run Code Online (Sandbox Code Playgroud)


小智 5

很多时候 403 错误是由于权限问题。Web 目录中的文件应该是全局可读的(chmod 644 或 664),并且目录应该是全局可读和可执行的(chmod 755 或 775)。