3

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 歳の誕生日プレゼントになります!

4

2 に答える 2

3

settings.pyで FORCE_SCRIPT_NAME を "" に定義して、fastcgi サーバーを再起動しようとしましたか?

FORCE_SCRIPT_NAME=""
于 2009-07-10T03:26:26.997 に答える
1

lighttpd で修正したい場合は、http://redmine.lighttpd.net/issues/show/729を参照してください。

つまり、1.4.23 にアップグレードし、"fix-root-scriptname" => "enable" を fcgi 構成に追加します。

于 2009-07-16T19:27:51.707 に答える