2011-10-02 36 views
1

串鑑於這點對我的本地nginx的實例文件的URL字符串可下載文件的鏈接,我怎麼做Django的返回導致文件從nginx的下載迴應?我不希望Django打開該文件並進行流式傳輸。返回給出的Django

回答

2

使用X-Accel-Redirect頭:http://wiki.nginx.org/XSendfile

例如:

resp = HttpResponse() 
resp['X-Accel-Redirect'] = "/static/my_file" 
return resp 

需要注意的是,按照文件,你需要在本地路徑轉換成nginx的可以成爲一個網址。

+0

所以,我是新來這和我有點困惑。我的nginx位於localhost:8001,而apache會重寫所有http:// localhost/static/file - > http:// localhost:8001/file。我嘗試了你上面所說的(也許不正確)。我的x-accel-redirect網址中應該有'localhost:8001'嗎? – victor

+0

你應該設置nginx從一些基本目錄(例如:'location/static/{ root/my/static/files /; }')提供靜態文件,然後返回一個指向那裏的絕對URL 。例如,如果你想提供'/ my/static/files/my_file',你可以使用'/ static/my_file'。 –