如何使ELB传递协议到node.js进程(Elastic Beanstalk)

时间:2016-07-27 04:31:47

标签: elastic-beanstalk amazon-elb

我有ELB平衡我的Node.js进程的TCP流量。当ELB正在平衡TCP连接时,它不会像使用http连接那样发送X-Forwarded-Proto标头。但我仍然需要知道连接是否正在使用SSL / TLS,因此如果它不是安全连接,我可以使用我的Node进程的重定向进行响应。

在平衡TCP连接时,有没有办法让ELB发送此标头?

由于

1 个答案:

答案 0 :(得分:0)

您可以为ELB配置代理协议以获取与连接相关的信息。在HTTP的情况下,ELB添加了关于客户端信息的标头,但是在TCP的情况下,AWS ELB只是从客户端传递标头而没有任何修改,这会导致后端服务器丢失客户端连接信息,因为它发生在你的情况。

要为您的ELB启用代理控制,您必须通过API执行此操作,目前无法通过UI执行此操作。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html

以上文档是有关如何执行此操作的分步指南,我不想在此处粘贴相同信息,因为该信息可能会随着时间的推移而发生变化。

修改

事实证明,亚马逊只实现了代理协议的第1版,它不会泄露SSL信息。然而,它确实提供了客户端请求的端口号,并且可以开发一个过程,例如,如果请求是通过端口443,那么它是SSL。我不喜欢它,因为它是间接的,需要devops和开发人员之间的硬编码和协调......似乎是现在的唯一方法......让我们希望AWS ELB开始支持具有SSL信息的代理协议的第2版很快。