Apache の Django FastCgi セットアップから lighttpd のセットアップに移行中です。
Apache では、Django ドキュメントで説明されている fcgi 構成を使用していました。コア部分は、すべての非静的 URL を /mysite.fcgi/$1 に書き換えることです。
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/に印刷した場合、結果は. 人生は楽しく、幸せでした。しかし、いくつかの問題に遭遇したため、Apache が提供できるよりも多くの同時接続をサポートする Web サーバーに移動する必要がありました。{{ request.get_full_path }}/help/
lighttpd に早送りします。すべてがうまく構成されています。mod_rewrite で URL を書き換えています。
url.rewrite-once = ( "^(/media/. )$" => "$1", "^/favicon.ico$" => "/med/img/favicon/favicon.ico", "^(/ . )$" => "/mysite.fcgi$1", )
/mysite.fcgi を処理する FastCGI があります。
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 - sjzabel@gmail.com" の sslmiddleware を使用します。このソフトウェアは request.get_full_path に依存しており、lighttpd では Apache とは異なる値を返します。request.path についても同じです。
誰でもこの問題から抜け出す方法を提案できますか? 理想的には、lighttpd mod_rewrite が Apache の下で mod_rewrite と同じ動作をすることを望みます。可能でない場合は、使用している ssliddleware パッケージと互換性のある lighttpd FastCGI Django セットアップが必要です。あるいは、lighttpd の mod_rewrite が URL を書き換える方法と互換性があるように、ssliddleware パッケージを変更することもできます。
この答えは素晴らしい 30 歳の誕生日プレゼントになります!