fcgi,ssl和django,将HTTP重定向到HTTPS

时间:2011-11-30 19:15:45

标签: django redirect https lighttpd fastcgi

我有一个django网站设置与lighttpd和ssl工作,但我似乎无法从http到https重定向工作。我的设置非常类似于:https://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/#lighttpd-setup我在ubuntu上使用lighttpd / 1.4.26

基本上我的设置看起来像这样:

$HTTP["host"] =~ "myhost.com" {
server.document-root = "/home/myvenv/blah" 
fastcgi.server = ( 
    "/blah.fcgi" => (
    (   
        "host" => "127.0.0.1",
        "port" => 16666,
        "check-local" => "disable",
        "max-procs" => 4,
        "min-procs" => 4,
    )   
)   
)
   url.rewrite-once = ( 
    "^(/favicon.ico.*)$" => "/$1",
    "^(/admin_media.*)$" => "/$1",
    "^(/media.*)$" => "/$1",
    "^(/.*)$" => "/blah.fcgi$1",
)

expire.url = ( 
    "/favicon.ico" => "access 1 seconds",
    "/admin_media" => "access 1 seconds",
"/media" => "access 1 seconds",
)

}

我想添加这个来做我的http到https重定向:

$SERVER["socket"] == ":80" {
  $HTTP["host"] =~ "(.*)" {
    url.redirect = ( "^/(.*)" => "https://%1/$1" )
  }
}

问题是当我启用重定向时,我的网址会被重写为:

https://myhost.com/blah.fcgi/my/path/to/blah

在我真正想要的时候加入blah.fcgi部分:

https://myhost.com/my/path/to/blah

我不确定为什么重定向包含重写和/或如何防止它并实际执行正确的重定向?

非常感谢。

1 个答案:

答案 0 :(得分:3)

我以同样的方式使用lighttpd,这是我如何进行类似的重定向:

url.redirect = (
  "^(?:/[a-z]+\.fcgi)?(.*)$" => "https://%1$1"
)

这会从左侧的匹配中删除重写的脚本名称,因此它不会显示在重定向中。