gpt4 book ai didi

Django 和 Nginx X-accel-redirect

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:14 25 4
gpt4 key购买 nike

到目前为止,我一直在摸索着保护 Django 的媒体文件,但没有成功!我只是想让它只有管理员用户才能访问媒体文件夹。这是我的 Nginx 文件。

server {
listen 80;
server_name xxxxxxxxxx;

location = /favicon.ico {access_log off; log_not_found off;}
location /static/ {
alias /home/{site-name}/static_cdn/;
}
location /media/ {
internal;
root /home/{site-name}/;
}

location / {
this is setup and working. Didn't include Code though

}

我的网址文件

urlpatterns = [
url(r'^media/', views.protectedMedia, name="protect_media"),
]

还有我的看法

def protectedMedia(request):

if request.user.is_staff:
response = HttpResponse()
response['Content-Type'] = ''
response['X-Accel-Redirect'] = request.path
return response

else:
return HttpResponse(status=400)

这会产生 404 Not Found Nginx 错误。这里有什么明显的错误吗?谢谢!

顺便说一句,我已经尝试在 Nginx 设置中将/media/添加到根 URL 的末尾。

最佳答案

感谢@Paulo Almeida,这就是解决此问题的方法。

在 nginx 文件中,我也更改了以前的内容...

   location /protectedMedia/ {
internal;
root /home/{site-name}/;
}

我的网址是...

url(r'^media/', views.protectedMedia, name="protect_media"),

View 是...

def protectedMedia(request):

if request.user.is_staff:
response = HttpResponse(status=200)
response['Content-Type'] = ''
response['X-Accel-Redirect'] = '/protectedMedia/' + request.path
return response

else:
return HttpResponse(status=400)

这非常有效!现在只有管理员用户可以访问存储在我的媒体文件夹中的媒体文件。

关于Django 和 Nginx X-accel-redirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45872539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com