Question

Je suis en train de migrer d'une configuration Django FastCGI Apache à un dans lighttpd.

Apache, j'utilisais la configuration fcgi décrit dans la documentation de Django. La partie de base étant la réécriture d'URL toutes mes non statiques à /mysite.fcgi/$1:

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

puis transmettre toutes les demandes de /mysite.fcgi pour FastCGI:

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

La configuration a travaillé pour Django. Si, par exemple, je suis allé à http://www.mydomain.com/help/ et j'ai imprimé {{ request.get_full_path }} dans le modèle, le résultat a été /help/. La vie était bonne et je suis heureux. Cependant, je suis tombé sur quelques questions qui me forcent à se déplacer vers un serveur Web supportant les connexions simultanées plus que Apache peut me donner.

Avance rapide à lighttpd. Tout est configuré et bien. Je réécris mes URL avec mod_rewrite:

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

et ont une manipulation FastCGI /mysite.fcgi:

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

Les choses fonctionnent en général et mon site Django fonctionne très bien. Mais quand je vais à http://www.mydomain.com/help/ et imprimer {{ request.get_full_path }} dans le modèle, le résultat est /mysite.fcgi/help/. Cela provoque des problèmes.

Bien que cela ne pose pas de problème en général que le site Django fonctionne bien, il ne provoque des problèmes lors de l'utilisation de SSL. Plus précisément, j'utilise sslmiddleware de "Stephen Zabel - sjzabel@gmail.com" de http: // www. djangosnippets.org/snippets/240/ . Ce logiciel repose sur request.get_full_path, qui retourne une valeur différente sous lighttpd que sous les Apache. Même chose pour request.path.

Quelqu'un peut-il suggérer un moyen de sortir de ce problème? Idéalement, je voudrais lighttpd mod_rewrite d'avoir le même comportement que mod_rewrite sous Apache. Sinon possible, je voudrais une configuration lighttpd Django FastCGI qui serait compatible avec le paquet sslmiddleware J'utilise. Sinon, je pourrais changer le paquet sslmiddleware pour être compatible avec la façon dont mod_rewrite de lighttpd réécrit les URL.

Cette réponse serait un 30 fantastique cadeau d'anniversaire!

Était-ce utile?

La solution

Avez-vous essayé de définir FORCE_SCRIPT_NAME à "" settings.py et redémarrez le serveur FastCGI?

FORCE_SCRIPT_NAME=""

Autres conseils

Voir http://redmine.lighttpd.net/issues/show/729 si vous voulez résoudre dans lighttpd.

En bref, la mise à niveau à 1.4.23 et ajouter "fix-root-scriptname" => "activer" la configuration fcgi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top