我在AWS ELB后面的Ubuntu 16.04上运行Lighttpd 1.4.35(APT上最新的)。负载均衡器正在接受端口80和443上的连接,并且正在进行SSL终止。
我正在尝试检测请求是否使用HTTPS执行,但Lighttpd似乎忽略了X-Forwarded-Proto标头。这只会导致无限的HTTP-> HTTPS重定向。我在这里检查过这个问题:question但是只有一种解决方法,没有解决方案。
我认为使用mod_extforward会有所帮助,但除了在日志中记录客户端IP之外,它似乎没有什么区别。
以下是我的配置的相关部分,在使用Lighttpd时正确检测HTTPS的任何想法都将不胜感激:
server.modules = (
"mod_accesslog",
"mod_access",
"mod_alias",
"mod_compress",
"mod_extforward",
"mod_redirect",
"mod_rewrite"
)
extforward.headers = ("X-Forwarded-For")
extforward.forwarder = ("all" => "trust")
# Check the domain
$HTTP["host"] =~ "^domain.com$" {
# If not HTTPS, redirect to it
$HTTP["scheme"] != "https" {
# Redo the host condition check to allow us to access the %1 variable
$HTTP["host"] =~ "^domain.com$" {
url.redirect = ("^/(.*)" => "https://%1/$1")
}
}
}