我在从一个Django FASTCGI设置了Apache的lighttpd中迁移到一个的过程。

在Apache时,使用在Django文档中描述的配置FCGI。核心部分是重写所有我的非静态的URL被/mysite.fcgi/$1:

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

和然后转发给/mysite.fcgi所有请求的FastCGI:

<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更多的并发连接网页服务器的一些问题可以给我。

快进到lighttpd的。所有的配置和良好。我重写我的网址与mod_rewrite的:

url.rewrite一次=(             “^(/媒体/ )$”=> “$ 1”,             “^ / favicon.ico的$”=> “/med/img/favicon/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它引起的问题。具体来说,我使用 “斯蒂芬·扎贝尔 - sjzabel@gmail.com” sslmiddleware从 HTTP:// WWW。 djangosnippets.org/snippets/240/ 。该软件依赖于request.get_full_path,其下的lighttpd返回不同的值比Apache下一样。同为Request的。

任何人都可以提出一个出路这个问题的?理想情况下,我想lighttpd的mod_rewrite的有相同的行为在Apache下mod_rewrite的。如果没有可能,我想一个lighttpd的FastCGI的Django的安装这将与我使用的sslmiddleware包兼容。或者,我可以改变sslmiddleware包要与mod_rewrite对lighttpd的重写URL的方式来兼容。

这个答案会让一个梦幻般的30岁生日礼物!

有帮助吗?

解决方案

你有没有尝试定义FORCE_SCRIPT_NAME为 “” 在 settings.py 和重新启动的fastcgi服务器?

FORCE_SCRIPT_NAME=""

其他提示

请参阅 http://redmine.lighttpd.net/issues/show/729如果你宁愿将其固定lighttpd的。

在短,升级到1.4.23,并添加 “FIX-根脚本名”=> “使能” 的FCGI配置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top