我正在嘗試使X-Sendfile適用於與Capistrano一起提供重磅附件。我發現X-Sendfile不符合符號鏈接。我如何處理由Capistrano符號鏈接的文件夾內的文件?Capistrano&X-Sendfile
我的Web服務器的Apache2 +乘客
在我production.rb:
config.action_dispatch.x_sendfile_header = "X-Sendfile"
我
控制器操作
:
filename = File.join([Rails.root, "private/videos", @lesson.link_video1 + ".mp4"])
response.headers["X-Sendfile"]= filename
send_file filename, :disposition => :inline, :stream => true, :x_sendfile => true
render nothing: true
我文件系統結構(其中「 - >」代表「符號鏈接」和壓痕意味着子文件夾):
/var/www/myproject
releases/
....
current/ -> /var/www/myproject/releases/xxxxxxxxxxxx
app/
public/
private/
videos/ -> /home/ftp_user/videos
我Apache配置 XSendFile上 XSendFilePath/#also試圖/家庭/ FTP_USER /視頻
我的應用程序能夠服務於小文件,但大的它給出了一個NoMemoryError(未能分配內存)
我認爲它不使用x-sendfile,因爲如果我不使用它,行爲是相同的。
下面是該文件的響應頭我試圖以服務
Accept-Ranges:bytes
Cache-Control:private
Connection:Keep-Alive
Content-Disposition:inline
Content-Range:bytes 0-1265/980720989
Content-Transfer-Encoding:binary
Content-Type:video/mp4
Date:Sat, 01 Mar 2014 13:24:19 GMT
ETag:"70b7da582d090774f6e42d4e44ae3ba5"
Keep-Alive:timeout=5, max=97
Server:Apache/2.4.6 (Ubuntu)
Status:200 OK
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Powered-By:Phusion Passenger 4.0.37
X-Request-Id:22ff0a30-c2fa-43fe-87c6-b9a5e7da12f2
X-Runtime:0.008150
X-UA-Compatible:chrome=1
X-XSS-Protection:1; mode=block
我真的不知道該如何調試它,如果它是一個X-sendfile的問題,或者如果我想做一些不可能的符號鏈接問題
編輯: 繼在接受一個建議的答案,它「神奇」開始工作!
我創建了一個Capistrano的任務是這樣的:
task :storage_links do
on roles(:web), in: :sequence, wait: 2 do
#creo i link simbolici alle risorse
within "/var/www/my_application/current/private" do
execute :ln, "-nFs", "/home/ftp_user/videos"
end
end
end
我沒finalize_update後運行它,所以我在重新啓動後運行,由專人。
而且我糾正我的Apache配置是這樣的:
XSendFilePath /var/www/my_application
在我的響應頭(我指着X-的sendfile到FTP文件夾之前)現在也X-SENDFILE沒有出現,並且我得到了206個部分內容,但一切似乎都奏效,而且apache以正確的方式提供文件(也是非常繁重的文件)。
我知道這可能是一個安全問題,但我會嘗試將它指向我的應用程序的最後一個版本,因爲它指向當前符號鏈接不工作。
好奇鏈接爲您的Rails的,客運,Apache和X版本目錄-發送文件。此外,您的操作系統的類型和版本。我不得不遷移到一個自定義的Apache服務器二進制文件,並且從來沒有得到過X-Sendfile的工作,與你的問題相同(不是內存部分,儘管它總是小文件),儘管我總是責備二進制文件。 – Adam21e
我在Ubuntu 13.10(64bit)上使用Rails 4.0.0,Passenger 4.0.37,Apache 2.4.6。希望它可以幫助你。 – sissy