Frage

Ich bin in dem Prozess von einem Django FastCGI-Setup in Apache zu einem in lighttpd der Migration.

Auf Apache, ich wurde mit der fcgi config in der Django-Dokumentation beschrieben. Der Teil Kern ist Umschreiben all meine nicht-statische URLs /mysite.fcgi/$1 werden:

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

und dann alle Anfragen für /mysite.fcgi für FastCGI Spedition:

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

Das Setup arbeitete für Django. Wenn zum Beispiel ging ich http://www.mydomain.com/help/ und ich gedruckt {{ request.get_full_path }} in der Vorlage, das Ergebnis war /help/. Das Leben war gut und ich war glücklich. Allerdings habe ich in einige Probleme lief, die mich zwingen zu einem Web-Server zu bewegen, die mehr gleichzeitige Verbindungen als Apache unterstützen kann mir geben.

Schneller Vorlauf bis lighttpd. Alle konfiguriert und gut. Ich meine URLs mit mod_rewrite Umschreiben:

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

und FastCGI Handhabung /mysite.fcgi haben:

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

Dinge funktionieren im Allgemeinen und meine Django-Website läuft gut. Aber wenn ich http://www.mydomain.com/help/ und Druck {{ request.get_full_path }} in der Vorlage zu gehen, ist das Ergebnis /mysite.fcgi/help/. Dies verursacht einige Probleme.

Dies ist zwar keine Probleme im Allgemeinen verursachen, da die Django-Website gut funktioniert, es Probleme verursacht, wenn ich SSL verwenden. Insbesondere verwende ich sslmiddleware von "Stephen Zabel - sjzabel@gmail.com" von http: // www. djangosnippets.org/snippets/240/ . Diese Software basiert auf request.get_full_path, die einen anderen Wert unter lighttpd zurück, als es unter Apache tat. Das Gleiche gilt für request.path.

Kann mir jemand einen Ausweg aus diesem Problem vorschlagen? Im Idealfall würde ich lighttpd mod_rewrite wie das gleiche Verhalten wie mod_rewrite unter Apache haben. Falls dies nicht möglich, würde ich einen lighttpd FastCGI Django Setup wie die mit dem sslmiddleware Paket kompatibel wäre ich verwende. Alternativ könnte ich das sslmiddleware Paket mit der Art und Weise kompatibel sein ändern, die von lighttpd mod_rewrite URLs umschreibt.

Diese Antwort würde ein fantastisches 30. Geburtstagsgeschenk machen!

War es hilfreich?

Lösung

Haben Sie versucht FORCE_SCRIPT_NAME auf "" in zu definieren settings.py und den fastcgi Server neu starten?

FORCE_SCRIPT_NAME=""

Andere Tipps

Siehe http://redmine.lighttpd.net/issues/show/729, wenn Sie lieber in lighttpd beheben würde.

Kurz gesagt, ein Upgrade auf 1.4.23 und fügen Sie "fix-root-skript" => "aktivieren", um die fcgi Konfig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top