Django+;Nginx-使用X-Accel-Redirect服务私有文件
我对此还不熟悉,但我对其工作原理的理解如下: 从nginx请求私有文件 nginx将此转发给django django执行它的操作,并返回一个包含Django+;Nginx-使用X-Accel-Redirect服务私有文件,django,nginx,x-accel-redirect,Django,Nginx,X Accel Redirect,我对此还不熟悉,但我对其工作原理的理解如下: 从nginx请求私有文件 nginx将此转发给django django执行它的操作,并返回一个包含X-Accel-Redirect头的响应 nginx看到这个头,并提供文件 我已经这样设置了我的nginx配置: upstream foo_app_server { server unix:/home/project_dir/gunicorn.sock fail_timeout=0; } server { listen 80;
X-Accel-Redirect
头的响应
nginx看到这个头,并提供文件
我已经这样设置了我的nginx配置:
upstream foo_app_server {
server unix:/home/project_dir/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name foo.com;
client_max_body_size 4G;
location /static/ {
alias /home/projec_dir/static/;
}
location /media/private/ {
internal;
alias /home/project_dir/media/private/;
}
location /media/ {
alias /home/project_dir/media/public/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://foo_app_server;
}
}
现在,django成功地接收到媒体/私有文件的请求,并成功地将X-Accel-Redirect头附加到响应
对于标题的内容,当请求的路径为media/private/some/path/to/file.pdf
X-Accel-Redirect:
media/private/some/path/to/file.pdf
private/some/path/to/file.pdf
path/to/file.pdf
他们都给了我404个错误。该文件确实存在
我认为这只是路径问题,头部中的路径与nginx conf中的位置和别名不匹配,但我已经尝试了一段时间,无法获得正确的组合
以前做过这项工作的人能告诉我们nginx到底在寻找什么吗?您找到解决方案了吗?