Lighttpdredirect到SSL会导致301redirect循环

我正在运行lighttpd 1.4.31与SSL支持,并有强迫在特定的虚拟主机的HTTPS问题。 如果我从下面的configuration禁用redirect行,它的工作原理(http和https都工作,但没有redirect),但是当我启用它时,我发现浏览器得到原因在一个301的循环。 我不明白为什么这是发生在我身上的redirect应该只适用于http。 我在configuration的顶部加载了mod_redirect,另外一个虚拟主机用ssl强制启动了一些域名,我不认为这会有什么影响。 我在做什么错在下面的configuration片段? 请注意,我将site.example.comreplace为我的网域。

$HTTP["host"] == "site.example.com" { dir-listing.activate = "enable" accesslog.filename = "/home/lighttpd/site.example.com/logs/access.log" server.document-root = "/home/lighttpd/site.example.com/htdocs" server.upload-dirs = ("/tmp") server.errorlog = "/home/lighttpd/site.example.com/logs/error.log" $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/home/lighttpd/site.example.com/cert.pem" $HTTP["url"] =~ "^/shell" { # shellinabox proxy.server = ( "" => (( "host" => "127.0.0.1", "port" => 4200, ),),) } } $HTTP["scheme"] == "http" { url.redirect = (".*" => "https://site.example.com/$0") } } 

看看我的configuration,这几乎和你一样:

  • 我想要https
  • 和httpredirect到https。

我的套接字configuration里面还有一件东西:

 $SERVER["socket"] == ":443" { ssl.engine = "enable" # ..... setenv.add-environment = ( "HTTPS" => "on" ) } 

我的redirect是在第一个主机之外处理的,就像这样:

 $HTTP["scheme"] == "http" { $HTTP["host"] =~ "site.example.fr" { url.redirect = ( "^/(.*)" => "https://site.example.fr/$1" ) } } 

而每一件事情都像一个魅力。

  • 我怀疑你的代理redirect回http
  • 用curl -vdebugging头文件
  • debug.log-request-handling = "enable"并检查error.log,另请参阅DebugVariables