如果用户未通过身份验证,如何限制NGINX提供媒体文件

时间:2018-07-09 10:04:46

标签: python django nginx

在url中,我有一个指向每次有人尝试访问媒体文件时serve_protected_file的URL

url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], views.serve_protected_file, {'document_root': settings.MEDIA_ROOT})

serve_protected_file看起来像这样

def serve_protected_file(request, path, document_root=None, show_indexes=False):
    if request.user.is_authenticated:
        return serve(request, path, document_root, show_indexes)

    raise Http404()

这仅在开发环境中有效

当我部署该文件时,nginx会提供这些文件,它会给我该文件通过看起来像这样的url

https://staging.mywebsite.com/media/img/531126758844.jpg

如何对其进行限制,除非用户通过身份验证,否则我的媒体文件夹中的所有内容都是私有的,并且应该限制对文件的外部访问

我的staging.nginx.conf看起来像

location ~ ^/media.*?/(.*)$ {
    alias /data/www/staging/mywesite/media/$1;
    access_log off;
}

1 个答案:

答案 0 :(得分:0)

好吧,Eurica经过两个小时的头部撞击...

由于媒体文件都是机密文件,因此我刚刚删除了media configuration中的staging.nginx.conf,它的作用就像一个超级按钮

所以现在正在执行django视图...,nginx正在拦截django视图