Pregunta

Estoy en el proceso de migración de una configuración de Django en Apache FastCgi a uno en lighttpd.

En Apache, que estaba usando el config fcgi se describe en la documentación de Django. La parte central es volver a escribir todos mis URL no estáticos que se /mysite.fcgi/$1:

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

y después reenviar todas las solicitudes de /mysite.fcgi para FastCGI:

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

La configuración trabajó para Django. Si, por ejemplo, fui a http://www.mydomain.com/help/ y Imprimí {{ request.get_full_path }} en la plantilla, el resultado fue /help/. La vida era buena y yo era feliz. Sin embargo, me encontré con algunos problemas que me están obligando a moverse a un servidor web que soporta conexiones simultáneas más que Apache me puede dar.

Un avance rápido hasta lighttpd. Todo está configurado y bien. Estoy reescribiendo mis URL con mod_rewrite:

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

y tienen /mysite.fcgi manejo FastCGI:

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

Las cosas funcionan en general y mi sitio Django funciona muy bien. Pero cuando voy a http://www.mydomain.com/help/ y {{ request.get_full_path }} de impresión en la plantilla, el resultado es /mysite.fcgi/help/. Esto provoca algunos problemas.

Si bien esto no causa problemas en general como el sitio Django funciona bien, sí causa problemas cuando se utiliza SSL. En concreto, utilizo sslmiddleware de "Stephen Zabel - sjzabel@gmail.com" de http: // www. djangosnippets.org/snippets/240/ . Este software se basa en request.get_full_path, que devuelve un valor diferente bajo lighttpd que lo hizo bajo Apache. Lo mismo para request.path.

Puede alguien sugerir una manera de salir de este problema? Idealmente, me gustaría mod_rewrite lighttpd tener el mismo comportamiento que mod_rewrite bajo Apache. Si no es posible, me gustaría una configuración FastCGI de Django lighttpd que sería compatible con el paquete sslmiddleware que estoy utilizando. Alternativamente, podría cambiar el paquete de sslmiddleware para que sea compatible con la forma en la que Mod_rewrite de lighttpd reescribe URL.

Esta respuesta sería un 30 cumpleaños fantástico regalo!

¿Fue útil?

Solución

¿trató de definir FORCE_SCRIPT_NAME a "" en settings.py y reiniciar el servidor fastcgi?

FORCE_SCRIPT_NAME=""

Otros consejos

http://redmine.lighttpd.net/issues/show/729 Si prefiere solucionar en lighttpd.

En resumen, actualizar a 1.4.23 y añadir "fix-root-scriptname" => "activar" a la configuración fcgi.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top