Этот вопрос вытекает из ответа на: How does one set up multiple accounts with separate databases for Django on one server?Несколько установок Django - Как настроить прозрачный мультиплекс через веб-сервер (Lighttpd)?
я не видел ничего подобного на Google или в другом месте (возможно, у меня есть неправильный словарный запас), так что я думаю, что вход может быть ценным дополнением к интернет-дискурсе.
Как можно настроить сервер likeso:
- одну установку Lighttpd
- Несколько проектов Django работает как FastCGI
- Проекты Django могут быть добавлены/удалены по желанию, и не должны требовать перезапуск веб-сервера
- Прозрачное перенаправление всех запросов/ответов на конкретную установку Django в зависимости от текущего пользователя
I.e. Указанные проекты Джанго (с соответствующими FastCGI сокет):
- Боб (/tmp/bob.fcgi)
- Сью (/tmp/sue.fcgi)
- Джо (/tmp/joe.fcgi)
проекты, которые Джанго начали с (упрощенно) сценарий 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
Я хочу трафик http://www.example.com/ направить г equest к правильному приложению Django в зависимости от пользователя, который вошел в систему.
Другими словами, http://www.example.com должен быть «be» /tmp/bob.fcgi, если bob вошел в систему, /tmp/joe.fcgi, если joe is , /tmp/sue.fcgi, если sue вошел в систему. Если никто не вошел в систему, он должен перенаправить на страницу входа.
Я предполагается демультиплексирования "plexer" FastCGI скрипт со следующим алгоритмом:
Если печенье $ PLEX установлен, запрос трубы для /tmp/$PLEX.fcgi
в противном случае перенаправление на страницу входа в систему (которая устанавливает куки PLEX, основанный на отображении многих к одному из UserName => PLEX)
конечно как вопрос безопасности $ PLEX должен быть порча и $ PLEX не должен вызывать никаких презумпций доверия.
Конфигурация Lighttpd будет likeso (хотя Apache, Nginx и т.д. могут быть использованы так же, как легко):
fastcgi.server = ("plexer.fcgi" =>
("localhost" =>
(
"socket" => "/tmp/plexer.fcgi",
"check-local" => "disable"
)
)
)
Входные и мысли, полезные ссылки, а также знать, как правильно реализовать FastCGI plexer все будут оценены.
спасибо.
Не могли бы вы пояснить * почему * вы хотите мультиплексировать на основе пользователя? Кажется странным, и это определенно не будет хорошо масштабироваться ... – 2008-12-05 22:48:31