Servir des fichiers protégés NGINX et Django

Nikita Alexander

J'essaie de servir des fichiers multimédias protégés avec Nginx sendfile et X-Accel-Redirect en utilisant Django 2.0. Voici ma configuration Nginx:

server {
    listen      8000;
    server_name localhost;
    charset     utf-8;
    sendfile    on;

    # Protected media
    location /protected {
        internal;
        alias /Users/username/Documents/sat23/venv/media/;
    }

    # Django static
    location /static {
        alias /Users/username/Documents/sat23/venv/static/;
    }

    # All other requests.
    location / {
        uwsgi_pass  django;
        include     /Users/username/Documents/sat23/venv/uwsgi_params;
    }
}

Ensuite, dans mon urls.py, j'ai ajouté une vue simple qui devrait servir mes fichiers multimédias (je configurerai les autorisations plus tard):

def serveMedia(request):
    url = request.path.replace('media', 'protected')
    response = HttpResponse('')
    response['X-Accel-Redirect'] = url
    response['Content-Type'] = ''
    return response

urlpatterns += [
    path('/media/', serveMedia, name='protected_media')
]

Cependant, chaque fois que j'appelle localhost:8000/media/users/user35.jpg, j'obtiens juste une page Django (pas nginx) 404, disant que Django a essayé tous les chemins configurés et qu'il n'a pas pu trouver celui demandé.

Donc, je soupçonnais que mon point de vue ne fonctionnait tout simplement pas. Je l'ai ensuite réécrit comme ceci:

def serveMedia(request):
    return HttpResponse(content=b'Hello there')

Et bien sûr, il n'est pas appelé. Mais je ne sais pas pourquoi. Est-ce que quelqu'un peut m'aider?

PS Toutes les recommandations sur la configuration de nginx conf sont également les bienvenues!

AKX

Il n'y a pas de groupe de capture dans votre pathappel Django là-bas, donc cela ne correspondra que /media/textuellement.

Vous voudrez peut-être utiliser la urlroute à l'ancienne avec une expression rationnelle comme

urlpatterns += [
    url(r'/media/.+', serveMedia),
]

pour capturer tout ce qui commence par /media/

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

docker, nginx, django et comment servir des fichiers statiques

Dockerized Nginx et Django, comment servir des fichiers statiques

Servir des fichiers statiques et multimédias sur un serveur distant avec Django et Nginx

obtenir nginx pour servir des fichiers statiques (django, gunicorn)

Comment servir des fichiers statiques avec Waitress et Django?

Dois-je utiliser Django ou Nginx pour servir des fichiers image statiques ? Leurs chemins de fichiers sont générés par Django ?

Configuration du site sous NGINX : servir des fichiers statiques et des fichiers .NET

Servir des fichiers statiques avec nginx sur plusieurs machines et disques durs

Servir des fichiers statiques via Nginx proxy HTTPS vers gunicorn django dans docker-compose

Servir Django et Vue avec Nginx

Comment puis-je servir dynamiquement des fichiers et les rendre téléchargeables dans Django?

Impossible de servir les fichiers css et js imbriqués via nginx?

Nginx pour servir le contenu des fichiers S3 dans le navigateur

Servir des fichiers html / css / js avec nginx

Nginx : servir des fichiers statiques pour un sous-chemin

Django + Nginx Impossible de servir les fichiers multimédias

Comment implémenter le téléchargement de fichiers protégés avec des requêtes et une authentification dans Django

Servir des fichiers téléchargés par un utilisateur pendant le développement dans django

Comment servir des fichiers statiques avec Spock et Lucid?

Servir des fichiers statiques avec Apache et Daphne

OctoberCms affichage des fichiers protégés

Comment servir des fichiers à télécharger dans django?

Comment puis-je servir des fichiers statiques dans django?

Comment empêcher Django de servir des fichiers localement?

Bonnes pratiques pour servir des fichiers statiques dans Django

Servir des fichiers statiques Django dans l'environnement Elasticbeanstalk Docker

Servir des fichiers statiques sur l'application AWS Django

Servir des fichiers statiques sur Apache avec Django (erreur 404)

Comment servir un fichier multimédia avec Nginx et Django ?

TOP liste

  1. 1

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  2. 2

    J'ai besoin de savoir si ces deux phrases sont les mêmes en programmation

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    Création d'un nouvel objet d'une classe avec un nouveau nom en cliquant sur un bouton dans java swing

  5. 5

    La taille de la forme n'est pas égale à la taille de la cellule du tableau et ajuste le texte à l'intérieur de la forme

  6. 6

    Javascript indiquant "impossible de définir la propriété 'innerHTML' sur null"

  7. 7

    Pourquoi utiliser Asyncio ne réduit pas le temps d'exécution global en Python et n'exécute pas les fonctions simultanément?

  8. 8

    Création d'un rappel python pour une fonction C à partir d'une DLL avec un tampon char.

  9. 9

    Trouver l'intersection et l'union de deux rectangles

  10. 10

    Comment convertir une chaîne en tuple en utilisant `reads`?

  11. 11

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  12. 12

    Restauration de la sauvegarde de la base de données SQL Server sur la version inférieure

  13. 13

    Nextcloud avec Docker: impossible de créer ou d'écrire dans le répertoire de données

  14. 14

    Compter combien de fois un nombre apparaît dans un tableau aléatoire

  15. 15

    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

  16. 16

    java.lang.NoClassDefFoundError: org / springframework / data / repository / config / BootstrapMode

  17. 17

    Créer un graphique à barres avec une fréquence relative / à partir d'un objet de table dans R

  18. 18

    comment le contrôle de tableau javascript devrait-il être

  19. 19

    Importation bizarre de Google Sheets importxml - Impossible d'obtenir le chemin correct vers les éléments

  20. 20

    Injecter des éléments dans une liste existante au printemps

  21. 21

    Placez le modeBar en haut au centre à l'aide de plotly.js

chaudétiquette

Archive