2017-03-03 31 views
0

一些背景:Nginx的X-加速測繪圖報頭兩個位置

我希望能夠從一個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

太晚了,但工作週期可能是這樣的。 (in application.rb or initializer)

config.middleware.swap(
    ::Rack::Sendfile, 
    ::Rack::Sendfile, 'X-Accel-Redirect', 
    [['file_path', 'nginx_internal'], 
    ['....','.....']] 

)