Pergunta

Eu estou no processo de migração de uma configuração Django FastCgi em Apache para um em lighttpd.

No Apache, eu estava usando a configuração fcgi descrito na documentação do Django. A parte principal sendo reescrever todos os meus URLs não-estáticos para ser /mysite.fcgi/$1:

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

e, em seguida, encaminhar todas as solicitações de /mysite.fcgi para FastCGI:

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

A configuração trabalhou para Django. Se, por exemplo, fui para http://www.mydomain.com/help/ e eu impressa {{ request.get_full_path }} no modelo, o resultado foi /help/. A vida era boa e eu estava feliz. No entanto, eu corri para algumas questões que estão me forçando a se mover para um servidor web que suporta conexões mais simultâneas que o Apache pode me dar.

Fast forward para lighttpd. Tudo é configurado e bem. Estou reescrevendo meus URLs com mod_rewrite:

url.rewrite-once = ( "^ (/ media /. ) $" => "$ 1", "^ / Favicon.ico $" => "/med/img/favicon/favicon.ico", "^ (/. ) $" => "/mysite.fcgi$1", )

e ter FastCGI /mysite.fcgi manipulação:

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

As coisas funcionam, em geral, e meu Django site funciona bem. Mas quando eu ir para http://www.mydomain.com/help/ e imprimir {{ request.get_full_path }} no modelo, o resultado é /mysite.fcgi/help/. Isso faz com que alguns problemas.

Enquanto isso não causa problemas em geral como o local Django funciona bem, ele faz causar problemas quando eu usar SSL. Especificamente, eu uso sslmiddleware de "Stephen Zabel - sjzabel@gmail.com" do http: // www. djangosnippets.org/snippets/240/ . Este software conta com request.get_full_path, que retorna um valor diferente sob lighttpd do que ele fez no Apache. Mesmo para request.path.

Alguém pode sugerir uma maneira de sair deste problema? Idealmente, eu gostaria mod_rewrite lighttpd para ter o mesmo comportamento como mod_rewrite no Apache. Se não for possível, eu gostaria de um lighttpd configuração FastCGI Django que seria compatível com o pacote sslmiddleware que estou usando. Como alternativa, eu poderia mudar o pacote sslmiddleware para ser compatível com a maneira que mod_rewrite de lighttpd reescreve URLs.

Esta resposta faria uma fantástica 30º aniversário presente!

Foi útil?

Solução

Você tentou definir FORCE_SCRIPT_NAME para "" em settings.py e reiniciar o servidor fastcgi?

FORCE_SCRIPT_NAME=""

Outras dicas

http://redmine.lighttpd.net/issues/show/729 se você preferir corrigi-lo em lighttpd.

Em suma, atualizar para 1.4.23 e adicionar "fix-root-scriptname" => "Enable" para a configuração fcgi.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top