lighttpd的mod_rewrite的与Apache的mod_rewrite的使用Django和FastCGI
-
12-09-2019 - |
题
我在从一个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配置。