在我的应用中,我有一个路由 /audio/*,因此该路由会拾取任意数量的音频文件夹。我不确定如何在 Nginx 中处理它。基本上,我需要访问这些文件 a) 存储在站点根目录之外的文件和 b) 4 或 5 个目录深度的文件。我只能输入 3 作为别名,因为其他文件事先是未知的。
这是一个网址
10.0.2.2 - - [03/Nov/2017:23:21:33 +0000] "GET /vagrant/TestRails/Music/VA%20-%20Punk%2045%20Chaos%20in%20the%20City%20of%20Angels%20and%20Devils%20(2016)/20%20The%20Hollywood%20Squares%20-%20Hollywood%20Square.mp3 HTTP/1.1" 500 595 "http://127.0.0.1:8080/audio/vagrant/TestRails/Music/VA%20-%20Punk%
2045%20Chaos%20in%20the%20City%20of%20Angels%20and%20Devils%20(2016)/20%20The%20Hollywood%20Squares%20-%20Hollywood%20Square.mp3" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
我的网站在/vagrant/TestRails/MediaExplorer
,音频文件存在于/vagrant/TestRails/Music/.../
。
编辑:发布整个服务器块:
server {
listen 80;
server_name localhost:8000;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/errorlog debug;
root /vagrant/TestRails/MediaExplorer;
index /home.slim;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
try_files /system/maintenance.html $uri $uri/home.slim $uri.html @ruby;
}
location @ruby {
proxy_pass http://media_explorer;
}
# ** This is the block in question **
location /audio/ {
alias /vagrant/TestRails/Music/Album1.....n/files;
try_files $uri /subfolder/$uri $uri/;
autoindex on;
}
这是可以做到的吗?到目前为止,它显然不起作用。我尝试了一些 try_files,虽然事情完全被搞砸了,但不确定这是否是可以使用的方法。
答案1
尝试这个
location /audio/ {
root /audio/root/path/to/audio/
}
答案2
针对此问题,我想到几个可能的解决方案。
- 让你的应用程序找出文件在磁盘上的实际位置,然后返回X-Accel-重定向到 nginx 来提供实际的文件服务。
- 使用覆盖文件系统让所有文件都出现在同一个(虚拟)目录中。