Ich habe bisher versucht, die Mediendateien von Django zu schützen, ohne Glück! Ich versuche einfach nur dort zu arbeiten, wo nur Administratoren Zugriff auf den Medienordner haben. Hier ist meine Nginx-Datei.Django und Nginx X-accel-redirect
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
}
Meine URL Datei
urlpatterns = [
url(r'^media/', views.protectedMedia, name="protect_media"),
]
Und meine Ansicht
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)
Dies ist ein 404 Not Found Nginx Fehler erzeugt. Sieht hier irgendetwas eklatant aus? Vielen Dank!
BTW, ich habe versucht,/media/an das Ende der Root-URL in den Nginx-Einstellungen hinzuzufügen.
Ihre Konfiguration scheint das Problem zu sein, das in dieser Antwort identifiziert wird: https://stackoverflow.com/a/45774975/1081569. Sie können nicht dieselbe URL für die geschützte Ansicht verwenden wie in der nginx-Konfiguration. –
Danke, @PauloAlmeida. Ich habe ein paar Änderungen an dem Link vorgenommen, den Sie mir geschickt haben, und es geschafft, dass es funktioniert! –