1 votes

nginx serving static files ; apache django ; secure file from apache to nginx ?

Je sers tous les fichiers statiques (/static/ et /media/) via nginx et toutes les autres requêtes sont acheminées vers Apache en utilisant mod_wsgi pour utiliser django. nginx agit comme proxy à travers Apache/mod_wsgi. Pour autant que je sache, c'est la méthode recommandée, à savoir que les fichiers statiques doivent être servis séparément.

J'ai maintenant la situation suivante : un utilisateur veut télécharger un fichier, mais je dois d'abord vérifier si l'utilisateur est autorisé à télécharger ce fichier (qui n'est pas sur /static/ ni sur /media/, évidemment, sinon il serait public). Cela signifie que la requête doit d'abord aller à django. Je suppose que la pratique recommandée ici est de ne pas laisser apache servir le fichier, donc si l'utilisateur est autorisé à télécharger le fichier, y a-t-il un moyen de dire à apache d'utiliser nginx pour servir ce fichier ?

2voto

jowi Points 111

Tout d'abord, il n'est pas nécessaire d'utiliser à la fois nginx et apache. L'un d'entre eux est suffisant et peut gérer correctement le contenu statique et dynamique. Je conseillerais nginx à cause de la deuxième partie de votre question.

Si vous voulez un contrôle d'accès à vos fichiers basé sur django, utilisez X-SendFile pour indiquer au serveur web le fichier à servir.

0 votes

J'ai suivi la documentation de django : "Nous recommandons d'utiliser un serveur Web séparé - c'est-à-dire un serveur qui n'exécute pas également Django - pour servir les médias." docs.djangoproject.com/fr/1.2/howto/deployment/modpython/

0 votes

C'est pour le déploiement de mod_python et une très vieille version de la documentation.

0 votes

1voto

Jessica Lenz Points 11

Comme nginx est le mandataire inverse, il reçoit la réponse avant de l'envoyer à l'utilisateur. J'ai défini manuellement l'en-tête X-Accel-Redirect de django et cela a fonctionné parfaitement comme je le souhaitais. http://wiki.nginx.org/XSendfile

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X