Ssl 在lighttpd配置中访问X-Forwarded-Proto

Ssl 在lighttpd配置中访问X-Forwarded-Proto,ssl,amazon-web-services,https,load-balancing,lighttpd,Ssl,Amazon Web Services,Https,Load Balancing,Lighttpd,我在AWS负载平衡器后面有一台lighttpd服务器。ELB为我处理所有SSL内容,并通过端口80上的HTTP将请求转发到lighttpd,同时设置X-Forwarded-Proto头 由于我只想让一个特定页面通过HTTPS和HTTP上的其他所有内容,所以我想在lighttpd配置文件中设置重定向,如: $HTTP["scheme"] == "https" { $HTTP["host"] !~ ".*ttc/(index.html)?$" { $HTTP["host"]

我在AWS负载平衡器后面有一台lighttpd服务器。ELB为我处理所有SSL内容,并通过端口80上的HTTP将请求转发到lighttpd,同时设置X-Forwarded-Proto头

由于我只想让一个特定页面通过HTTPS和HTTP上的其他所有内容,所以我想在lighttpd配置文件中设置重定向,如:

$HTTP["scheme"] == "https" {
    $HTTP["host"] !~ ".*ttc/(index.html)?$" {
        $HTTP["host"] =~ "(.*)" {
            url.redirect = ( "^(.*)$" => "http://%1$1")
        }
    }
}
当然,这不起作用,因为lighttpd只看到HTTP请求

我查看了mod_extforward,但这似乎只提供了对X-Forwarded-For报头的访问


如果您能给我一些建议,告诉我如何解决这个问题,而不必离开lighttpd,我将不胜感激。

我找不到答案,因此我使用端口配置进行了如下攻击:

HTTPS 443 (elb) => 80 (instance)
HTTP  80  (elb) => 81 (instance)
在Lighttpd配置中:

$SERVER["socket"] == ":81" {
    # capture vhost name with regex conditiona -> %0 in redirect pattern
    # must be the most inner block to the redirect rule
    $HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0$0")
    }
}

因此,基本上,当Lighttpd检测到与81的连接时,它只是将其重定向到https。

您使用的Lighttpd的版本是什么?我在看1.4.36,看到mod_extforward.c确实处理X-Forwarded-Proto


如果这对lighttpd 1.4.36仍然不起作用,那么可能需要在lighttpd.conf中的其他模块之前加载mod_extforward?

这并不能回答问题,因为我不希望所有请求都转到HTTPS。我唯一需要加密的是对登录页面的请求,其余的可以安全地使用纯HTTP。是的,可能是把它添加到了错误的问题中。不管怎样,也许你可以在你的解决方案中使用我的解决方案。没有直接的方法可以像你所希望的那样去做。我很确定在我发布这个问题的时候,我们有一个早期版本的lighttpd。不过,我现在已经换了一份新工作,所以我无法核实。