Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django+;提供私有静态文件的nginx_Django_Nginx - Fatal编程技术网

Django+;提供私有静态文件的nginx

Django+;提供私有静态文件的nginx,django,nginx,Django,Nginx,我正在尝试从nginx和django服务器保护用户文件 nginx.conf: server { listen 80; gzip off; expires off; location /static/ { add_header X-Static hit; autoindex on; expires off; root /Users/andrewshkovskii/workspace/ip_pbx/

我正在尝试从nginx和django服务器保护用户文件

nginx.conf:

server {

    listen 80;
    gzip off;
    expires off;

    location /static/ {
        add_header X-Static hit;
        autoindex on;
        expires off;
        root /Users/andrewshkovskii/workspace/ip_pbx/;
    }

    location / {
        proxy_pass       http://localhost:8000;
        rewrite ^/audiofiles/get/(\d+)/ /audiofiles/serve/$1/ last;
    }

    location /media/audio {
        internal;
        root   /var/ip_pbx/users;
    }
}
Django视图:

def get(self, request, *args, **kwargs):
    audio_file = self.get_object()
    ogg_file_version = audio_file.audiofileversion_set.filter(format="ogg")
    if ogg_file_version.exists():
        ogg_file_version = ogg_file_version[0]
        res = HttpResponse()
        res["Content-type"] = "audio/ogg"
        res["X-Accel-Redirect"] = ogg_file_version.file.path
        res["Content-length"] = ogg_file_version.file.size
        return res
    return Http404()
如果我尝试获取localhost/audiofiles/GET/74/,nginx将把它重写为view(/audiofiles/service/74/),view将返回响应,但返回时,它将尝试获取localhost:8000/%完整的文件路径%。。为什么?(文件存在..)

根据配置:

 server {

    listen 80;
    gzip off;
    expires off;
    error_log /usr/local/Cellar/nginx/1.2.5/logs/error.log debug;

    location /static/ {
        add_header X-Static hit;
        autoindex on;
        expires off;
        root /Users/andrewshkovskii/workspace/ip_pbx/;
    }

    location / {
        proxy_pass       http://localhost:8000;
        rewrite ^/audiofiles/get/(\d+)/ /audiofiles/serve/$1/ last;
    }

    location ~ /var/ip_pbx/users_andrewshkovskii/(\d+)/(audio|calls)/(.*) {
        internal;
        root   /;
    }
}
注意私人文件位置的re(在我的情况下…)