【问题标题】:Django+nginx serving private static filesDjango+nginx 提供私有静态文件
【发布时间】:2012-12-11 10:02:17
【问题描述】:

我正在尝试从 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()

如果我尝试 GET ,比如说 localhost/audiofiles/get/74/ ,nginx 会将其重写为查看(/audiofiles/serve/74/),并且查看将返回响应,但它会在返回时响应,将尝试 GET localhost:8000/%full_file_path% .. 为什么? (文件存在..)

【问题讨论】:

    标签: django nginx


    【解决方案1】:

    通过配置:

     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   /;
        }
    }
    

    注意私有文件的位置(在我的情况下..)

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2015-11-30
      • 2016-01-28
      • 2022-10-06
      • 2021-07-07
      相关资源
      最近更新 更多