如何使用 NGINX 通过 HTTP 提供静态文件目录

Fru*_*sin 10 http nginx

问题

带有 NGINX 的服务器有一个目录,其中包含需要通过 HTTP 提供服务的文件。

该目录位于(示例):/media/user/data

NGINX 需要什么配置才能通过 HTTP 为该目录(及其所有文件和子文件夹)提供服务?

通过 HTTP 提供的目录必须是完全可访问的,并且任何用户都应该能够浏览目录的所有内容。

需要配置的所有步骤。

研究

对该主题的研究发现文件夹内sites-available目录中的默认文件需要更改/etc/nginx,如下所示:

 location /data {
    root /media/user/;
    autoindex on;
  }
}
Run Code Online (Sandbox Code Playgroud)

其他

从最近的评论到建议的答案:

编辑sites-available中的默认文件以包含该目录,然后通过访问显示标准nginx祝贺页面的127.0.0.1重新启动服务器并验证其能够提供服务。然后当尝试访问 http://127.0.0.1/data 时,服务器产生了 403 Forbidden 错误。– 节俭的葡萄干

Tub*_*ess 14

您可以通过编辑现有的 Nginx 虚拟主机(您提到的默认主机)来实现这一点。只要确保 /media/user/data 目录和该目录中的所有内容都可以被 Nginx 服务下的用户读取(最有可能是“nginx”用户)。

如果你想在不同的(子)域下托管这些文件,你可以创建新的 Nginx 虚拟主机,内容如下:

server {
  listen *:80;
  server_name example.com www.example.com;

  root /media/user/data;
  autoindex on;
}
Run Code Online (Sandbox Code Playgroud)

更新:从下面的评论中,还需要修改目录权限,以便 Nginx 可以提供内容而不是返回403 forbiden错误。

虽然权限/media/user/data/目录是好的,/media//media/user/目录中缺少可执行权限。问题通过以下命令解决:

sudo chmod o+x /media/ /media/user/