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

标签 ssl amazon-web-services https load-balancing lighttpd

我在 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/

相关文章:

ssl - docker push 上的 TLS 超时?

amazon-web-services - AWS Cloudformation - 启用 AWS Loadbalancer cookie 粘性

c# - 如何上传内存文件到amazon S3?

mysql - 亚马逊网络服务 mysql2 数据库

c# - SignalR - 无法为 SSL/TLS 安全通道建立信任关系

ssl - 如何在网站名称的 SSL 层中提供自定义名称?

node.js - 在 Heroku 上通过 https 运行 Keystone.js 应用程序

ruby-on-rails - ActionMailer SMTP "certificate verify failed"

python - 如何在 Python 3 中使用 https URL 下载图像?

python-3.x - 有人可以解释一下 SSL 证书的回调函数吗?