Этот вопрос вытекает из ответа на: Как настроить несколько учетных записей с отдельными базами данных для Django на одном сервере?
Я не видел ничего подобного ни в Google, ни где-либо еще (возможно, у меня неправильный словарь), поэтому я думаю, что ввод может быть ценным дополнением к интернет-дискурсу.
Как можно настроить сервер Likeo:
- Одна установка Lighttpd
- Несколько проектов Django, работающих под управлением FastCGI
- Проекты Django могут быть добавлены / удалены по желанию, и не должны требовать перезапуска веб-сервера
- Прозрачное перенаправление всех запросов / ответов на конкретную установку Django в зависимости от текущего пользователя
т.е. Данные проекты Django (с соответствующим сокетом FastCGI):
- Боб (/tmp/bob.fcgi)
- Сью (/tmp/sue.fcgi)
- Джо (/tmp/joe.fcgi)
Проекты Django, которые запускаются с помощью (слишком упрощенного) скрипта 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/ направлял запрос в правильное приложение Django в зависимости от пользователя, вошедшего в систему.
Другими словами, http://www.example.com должно быть «be» /tmp/bob.fcgi, если вошел в систему bob, /tmp/joe.fcgi, если в систему вошел joe, /tmp/sue.fcgi, если подать в суд авторизован. Если никто не авторизован, он должен перенаправить на страницу авторизации.
Я рассмотрел демультиплексирующий сценарий FastCGI "plexer" со следующим алгоритмом:
Если установлен файл cookie $ PLEX, отправьте запрос в /tmp/$PLEX.fcgi
В противном случае перенаправить на страницу входа (которая устанавливает cookie PLEX на основе сопоставления имени пользователя => PLEX с множеством к одному)
Конечно, в целях безопасности $ PLEX следует проверять на зараженность, а $ PLEX не должен вызывать никаких презумпций доверия.
Конфигурация Lighttpd будет подобной (хотя Apache, Nginx и т. Д. Могут использоваться так же легко):
fastcgi.server = ( "plexer.fcgi" =>
( "localhost" =>
(
"socket" => "/tmp/plexer.fcgi",
"check-local" => "disable"
)
)
)
Вклад и мысли, полезные ссылки и знание того, как правильно реализовать плексер FastCGI - все это будет оценено.
Спасибо.