在我的nginx 0.8.34安装程序中,我使用X-Accel-Redirectfunction来控制应用程序代码中的文件下载,而没有应用程序处理下载本身。
经过很多痛苦,现在基本上工作,除了nginx总是返回带有text/html内容types的文件。
默认的内容types是http块中指定的application / octet-stream。
除了别的以外,服务器块还包含存储文件的目录的定义:
location /files { default_type application/octet-stream; alias /srv/www/uploads; internal; }
所以我甚至在这里指定了内容types,但没有任何改变。
我不想通过应用程序来设置Content-Type,因为那样我会减慢我的速度(我首先必须确定它)。 所以理想情况下,nginx会根据文件扩展名返回正确的mimetype(我在http块中包含了mime.types)。
如果你想让nginx猜出正确的mimetypes,你必须确保没有内容types从你的后端服务器返回。
With django: response = HttpResponse() response['Content-Type'] = '' response['X-Accel-Redirect'] ='/my/file.jpg' return response
我个人只是在应用程序中设置application / octet-stream,但是你也许可以使用fastcgi_ignore_headers来防止Nginx使用后端提供的头文件。
fastcgi_ignore_headers Content-Type;