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

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

问题

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

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

问题

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

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

需要配置的所有步骤。

研究

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

 location /data {
    root /media/user/;
    autoindex on;
  }
}

其他

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

编辑 sites-available 中的默认文件以包含目录,然后重新启动服务器,并通过访问 127.0.0.1 验证是否能够提供服务,该页面显示了标准的 nginx 祝贺页面。然后,当尝试访问 http://127.0.0.1/数据服务器出现 403 Forbidden 错误。 – Frugal Rasin

答案1

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

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

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

  root /media/user/data;
  autoindex on;
}

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

虽然目录的权限/media/user/data/很好,/media//media/user/目录缺少可执行权限。使用以下命令解决了该问题:

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

答案2

要在 NGINX 中仅提供单个目录和子目录,最简单的方法是在 nginx.conf 文件中进行以下更改:

删除添加“sites-enabled”目录的行:包含以下内容的行:

    include /etc/nginx/sites-enabled/*;

并在同一位置输入以下内容:

    server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            root /path/to/the/dir/you/want/to/serve;
            autoindex on;
    }

相关内容