Domanda

Io sono nel processo di migrazione da una configurazione Django FastCGI in Apache a uno in lighttpd.

In Apache, stavo usando la configurazione fcgi descritto nella documentazione Django. La parte fondamentale di essere riscrivere tutti i miei URL non statici da /mysite.fcgi/$1:

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

e quindi inoltrare tutte le richieste di /mysite.fcgi per FastCGI:

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

Il setup ha lavorato per Django. Se, per esempio, sono andato a http://www.mydomain.com/help/ e ho stampato {{ request.get_full_path }} nel modello, il risultato è stato /help/. La vita è stata buona e sono stato felice. Tuttavia, mi sono imbattuto in alcuni problemi che mi costringono a passare ad un server web che supporta le connessioni più simultanee di Apache mi può dare.

Avanti veloce di lighttpd. Tutto è configurato e ben. Sto riscrivendo i miei URL con mod_rewrite:

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

e hanno movimentazione FastCGI /mysite.fcgi:

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

Le cose funzionano in generale e il mio sito Django funziona benissimo. Ma quando vado a http://www.mydomain.com/help/ e {{ request.get_full_path }} stampa nel modello, il risultato è /mysite.fcgi/help/. Questo fa sì che alcuni problemi.

Anche se questo non causa problemi, in generale, come il sito Django funziona bene, non causa problemi quando uso SSL. In particolare, io uso sslmiddleware da "Stephen Zabel - sjzabel@gmail.com" da http: // www. djangosnippets.org/snippets/240/ . Questo software si basa su request.get_full_path, che restituisce un valore diverso in lighttpd di quanto abbia fatto in Apache. Lo stesso vale per request.path.

Qualcuno può suggerire una via d'uscita di questo problema? Idealmente, vorrei mod_rewrite lighttpd avere lo stesso comportamento di mod_rewrite in Apache. Se non è possibile, vorrei una lighttpd configurazione FastCGI Django che sarebbe compatibile con il pacchetto sslmiddleware sto usando. In alternativa, ho potuto cambiare il pacchetto sslmiddleware per essere compatibile con il modo che mod_rewrite da lighttpd riscrive URL.

Questa risposta sarebbe un fantastico regalo di compleanno 30!

È stato utile?

Soluzione

Hai provato a definire FORCE_SCRIPT_NAME a "" in settings.py e riavviare il server FastCGI?

FORCE_SCRIPT_NAME=""

Altri suggerimenti

http://redmine.lighttpd.net/issues/show/729 se si preferisce risolvere il problema in lighttpd.

In breve, l'aggiornamento a 1.4.23 e aggiungere "fix-root-nomescript" => "consentire" al config fcgi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top