我在 AWS 负载均衡器后面有一个 lighttpd 服务器。 ELB 为我处理所有 SSL 内容,并通过端口 80 上的 HTTP 将请求转发到 lighttpd,同时设置 X-Forwarded-Proto header 。
因为我只想让一个特定页面通过 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 header 的访问。
如果有任何关于如何解决这个问题的建议,我将不胜感激,而无需离开 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。
关于ssl - 在 lighttpd 配置中访问 X-Forwarded-Proto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28414799/