Cette question découle de la réponse à: How does one set up multiple accounts with separate databases for Django on one server?Plusieurs installations de Django - Comment configurer un multiplex transparent via le serveur web (Lighttpd)?
Je ne l'ai pas vu quelque chose comme ça sur Google ou ailleurs (peut-être que j'ai le mauvais vocabulaire), donc je pense que l'entrée pourrait être un ajout précieux au discours internet.
Comment pourrait-on configurer un serveur likeso:
- Une installation de Lighttpd
- multiples projets Django en cours d'exécution en tant que FastCGI
- Les projets Django peuvent être ajoutés/supprimés à volonté, et ne doit pas exiger redémarrage du serveur Web
- Redirection transparente de toutes les demandes/réponses vers une installation Django particulière en fonction de l'utilisateur en cours
I.e. Compte tenu des projets Django (avec prise FastCGI correspondante):
- Bob (/tmp/bob.fcgi)
- Sue (/tmp/sue.fcgi)
- Joe (/tmp/joe.fcgi)
les projets Django en cours de démarrage avec un script (trop simpliste) likeso:
#!/bin/sh
NAME=bob
SOCKET=/tmp/$NAME.fcgi
PROTO=fcgi
DAEMON=true
/django_projects/$NAME/manage.py runfcgi protocol=$PROTO socket=$SOCKET
daemonize=$DAEMON
Je veux du trafic vers http://www.example.com/ pour diriger le r équivaut à l'application Django correcte en fonction de l'utilisateur qui est connecté.
En d'autres termes, http://www.example.com devrait être "être" /tmp/bob.fcgi si bob est connecté, /tmp/joe.fcgi si joe est connecté, /tmp/sue.fcgi si sue est connecté. Si personne n'est connecté, il doit rediriger vers une page de connexion.
J'ai contemplé un démultiplexage "Plexer" script FastCGI avec l'algorithme suivant:
Si le cookie $ PLEX est réglé, demande de tuyau à /tmp/$PLEX.fcgi
sinon rediriger la page de connexion (qui définit le PLEX cookie basé sur un grand nombre à un mappage du nom d'utilisateur => PLEX)
Bien sûr, comme une question de sécurité $ PLEX devrait être entacher vérifié, et $ PLEX ne devrait donner lieu à aucune présomption de confiance.
Une configuration Lighttpd serait likeso (bien que Apache, Nginx, etc. pourrait être utilisé aussi facilement):
fastcgi.server = ("plexer.fcgi" =>
("localhost" =>
(
"socket" => "/tmp/plexer.fcgi",
"check-local" => "disable"
)
)
)
entrée et pensées, liens utiles, et de savoir comment appliquer correctement les FastCGI Plexer serait tout apprécié.
Merci.
Pourriez-vous préciser * pourquoi * vous voulez multiplexer en fonction de l'utilisateur? Cela semble étrange, et ça ne va certainement pas bien évoluer ... –