问题
具有 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;
}