2011-10-02 42 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'。 –