Вопрос

Я нахожусь в процессе перехода с установки Django FastCGI в Apache на установку в lighttpd.

В Apache я использовал конфигурацию fcgi, описанную в документах Django.Основная часть заключается в переписывании всех моих нестатических URL-адресов на /mysite.fcgi / $ 1:

RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]

а затем перенаправляет все запросы на /mysite.fcgi для FastCGI:

<IfModule mod_fastcgi.c>
    FastCGIExternalServer /opt/www/mysite.fcgi -host 127.0.0.1:8000
</IfModule>

Установка сработала для Django.Если бы, например, я пошел в http://www.mydomain.com/help/ и я напечатал {{ request.get_full_path }} в шаблоне результат был /help/ .Жизнь была хороша, и я был счастлив.Однако я столкнулся с некоторыми проблемами, которые вынуждают меня перейти на веб-сервер, поддерживающий больше одновременных подключений, чем может предоставить мне Apache.

Перенесемся в lighttpd.Все настроено и хорошо.Я переписываю свои URL-адреса с помощью mod_rewrite:

url.переписать-один раз = ( "^(/media/.)$" => "$1", "^/favicon.ico$" => "/med/img/значок /favicon.ico", "^(/.)$" => "/mysite.fcgi $1", )

и иметь быструю обработку CGI /mysite.fcgi:

   fastcgi.server = (
       "/mysite.fcgi" => (
           "main" => (
               "host" => "127.0.0.1",
               "port" => 8000,
               "check-local" => "disable",
           )
       ),
   )

В целом все работает, и мой сайт Django работает нормально.НО когда я иду к http://www.mydomain.com/help/ и напечатать {{ request.get_full_path }} в шаблоне результатом является /mysite.fcgi/help/ .Это вызывает некоторые проблемы.

Хотя в целом это не вызывает проблем, поскольку сайт Django работает хорошо, это вызывает проблемы, когда я использую SSL.В частности, я использую sslmiddleware от "Stephen Zabel - sjzabel@gmail.com" из http://www.djangosnippets.org/snippets/240/ .Это программное обеспечение полагается на request.get_full_path , который возвращает другое значение в lighttpd, чем в Apache.То же самое для запроса.путь .

Кто-нибудь может предложить выход из этой проблемы?В идеале я бы хотел, чтобы lighttpd mod_rewrite вел себя так же, как mod_rewrite в Apache.Если это невозможно, мне бы хотелось установить lighttpd FastCGI Django, который был бы совместим с пакетом sslmiddleware, который я использую.В качестве альтернативы, я мог бы изменить пакет sslmiddleware, чтобы он был совместим с тем, как mod_rewrite из lighttpd перезаписывает URL-адреса.

Этот ответ стал бы фантастическим подарком на 30-летие!

Это было полезно?

Решение

Вы пытались определить FORCE_SCRIPT_NAME в "" в settings.py и перезапустить сервер fastcgi?

FORCE_SCRIPT_NAME=""

Другие советы

Видишь http://redmine .lighttpd.net/issues/show/729 если вы предпочитаете исправить это в lighttpd.

Короче говоря, обновитесь до 1.4.23 и добавьте "fix-root-scriptname" => "включить" в конфигурацию fcgi.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top