某些背景信息:
我希望能够从Rails应用程序触发文件下载,并使文件由Nginx下载。
我可以将其用于一个文件夹,但不能用于两个不同的文件夹。
我正在使用以下内容:
# nginx config
location /filestorage/ {
internal;
alias /mnt/filestorage/;
}
proxy_set_header X-Accel-Mapping /mnt/filestorage/=/filestorage/;
# controller code (e.g. app/controllers/downloads_controller.rb)
send_file('/mnt/filestorage/my_file.zip')
我尝试过以下内容来支持其他文件夹:
location /filestorage/ {
internal;
alias /mnt/filestorage/;
}
location /filestorage2/ {
internal;
alias /mnt/filestorage/;
}
proxy_set_header X-Accel-Mapping "/mnt/filestorage/=/filestorage/ /mnt/filestorage2/=/filestorage2/";
# controller code (e.g. app/controllers/downloads_controller.rb)
send_file('/mnt/filestorage/my_file.zip')
send_file('/mnt/filestorage2/another_file.zip')
然而,这并不起作用,并且两个文件夹中的所有文件都不可用。
有没有办法将位置传递给X-Accel-Mapping标头?
答案 0 :(得分:0)
太晚了,但是可能是这样的。 (在application.rb或初始化程序中)
config.middleware.swap(
::Rack::Sendfile,
::Rack::Sendfile, 'X-Accel-Redirect',
[['file_path', 'nginx_internal'],
['....','.....']]
)