ApacheのDjango FastCgiの設定からlighttpdの設定に移行中です。lighttpd mod_rewriteとApache mod_rewriteとDjangoとFastCGIを使用する
Apacheでは、私はDjangoのドキュメントで説明されているfcgi設定を使用していました。コア部分は/mysite.fcgi/$1するために、すべての私の非静的URLを書き換えている:
RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]
、その後、FastCGIのため/mysite.fcgiに対するすべての要求を転送:
<IfModule mod_fastcgi.c>
FastCGIExternalServer /opt/www/mysite.fcgi -host 127.0.0.1:8000
</IfModule>
セットアップが働いていましたDjangoのために。たとえば、http://www.mydomain.com/help/
に行って、{{ request.get_full_path }}
をテンプレートに印刷すると、結果は/help/
となりました。人生は良かったし、私は幸せだった。しかし、私はいくつかの問題に遭遇し、Apacheよりも多くの同時接続をサポートするWebサーバーに移動させてしまいました。
lighttpdへの早送り。すべてが設定されています。私はmod_rewriteをして私のURLを書き換えています:
url.rewriteワンス=( "^(/メディア/ )$" => "$ 1"、 "^/favicon.icoをします$" =>「/ MED/IMG /ファビコン/ favicon.icoを」、 "^(/。)$" => "/mysite.fcgi$1"、 )
およびFastCGIが取り扱いしている/mysite.fcgi:
fastcgi.server = (
"/mysite.fcgi" => (
"main" => (
"host" => "127.0.0.1",
"port" => 8000,
"check-local" => "disable",
)
),
)
一般的には動作し、私のDjangoサイトはうまく動作します。しかし、http://www.mydomain.com/help/
に行って、テンプレートに{{ request.get_full_path }}
を印刷すると、結果は/mysite.fcgi/help/
になります。これはいくつかの問題を引き起こします。
これはDjangoサイトがうまく動作するため、一般的に問題はありませんが、SSLを使用すると問題が発生します。具体的には、http://www.djangosnippets.org/snippets/240/の "Stephen Zabel - [email protected]"のsslmiddlewareを使用しています。このソフトウェアは、request.get_full_pathに依存しています。これは、lighttpdでApacheとは異なる値を返します。 request.pathと同じです。
誰もこの問題を解決する方法を提案できますか?理想的には、lighttpd mod_rewriteがApacheのmod_rewriteと同じ動作をするようにしたいと思います。可能でない場合は、私が使用しているsslmiddlewareパッケージと互換性のあるlighttpd FastCGI Djangoセットアップが必要です。代わりに、lighttpdのmod_rewriteがURLを書き換える方法と互換性があるようにsslmiddlewareパッケージを変更することもできます。
この回答は素晴らしい30歳の誕生日プレゼントになります!
トランクのDjangoや安定版を使用していますか?私はほとんど同じlighttpd設定を持っていて、 "request.get_full_path"はあなたが望むように動作します。 – Glader