AWS Elastic Load Balancer有选择地启用SSL

丹·L。

我目前有一个基于Rails的Web应用程序,该应用程序需要一小部分页面才能通过HTTP进行服务-但希望通过HTTPS来提供其余的页面。在我当前的AWS设置中,SSL在弹性负载均衡器处终止,并且与我的应用程序服务器的所有通信都是通过HTTP进行的。因此,不适合使用Rack SSL Enforcer之类的解决方案目前,我在每个页面中提供以下JS代码段以处理重定向:

<% if should_be_ssl? %>
<script>
  if (window.location.protocol != "https:"){
    window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);
  }
</script>
<% else %>
<script>
if (window.location.protocol != "http:"){
  window.location.href = "http:" + window.location.href.substring(window.location.protocol.length);
}
</script>
<% end %>

每次访问其中一个页面时,这都会导致相对显着的性能下降。有谁知道一种通过SSL选择性地提供某些页面并在负载均衡器级别进行控制的方法吗?

乔·泰勒

ELB本身当前不支持此功能,但是ELB提供了X-Forwarded-Proto标头。您可以检查此内容以查看来自客户端的请求是否通过HTTPS。然后,如有必要,您可以提供重定向响应,而不是页面内容。有关更多信息,请参阅AWS伙计们的这篇博客文章

您要么必须实现此逻辑

  1. 带有中间件,例如,rack-ssl-enforcer

    查看关于机架ssl强制执行器的文档,它似乎支持X-Forwarded-Proto开箱即用,因此您可能根本不需要执行任何操作。您可以在源代码中看到该标头受到尊重。

  2. 在您的应用程序中(可能带有重定向响应,而不是在客户端上)

  3. 在反向代理中,例如您的应用服务器和ELB之间的代理

    acl is_http hdr(X-Forwarded-Proto) http
    acl account_login url_beg /account/login
    redirect scheme https code 301 if account_login is_http
    

根据您的配置,如果ELB和正在检查标题的对象之间还有其他反向代理,则可能需要配置这些反向代理以X-Forwarded-Proto正确传递标题。例如,参见此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

阻止Elastic Load Balancer显示内部专用IP

具有AWS Elastic Block Storage的Kubernetes

Elastic Load Balancer之后的Elastic beantalk实例的Django ALLOWED_HOST设置

阻止对AWS Elastic Beanstalk和Elastic Load Balancer的HEAD请求

AWS Elastic Beanstalk Namecheap SSL配置

在Elastic Beanstalk前面的Application Load Balancer上终止SSL

Amazon Elastic Load Balancer(ELB)是否可以证明故障?

使用Tomcat的Elastic Load Balancer产生504错误

.net Core-带有AWS Load Balancer和Elastic Beanstalk的HTTPS不起作用

AWS Network Load Balancer问题

如何在AWS Elastic Load Balancer上实施HTTP严格传输安全性(HSTS)?

无法通过AWS Elastic Load Balancer进行与MySQL容器的SSL加密连接

AWS Application Load Balancer上的Websocket + SSL

Amazon AWS EC2-如何限制仅从Elastic Load Balancer接收流量?

AWS Elastic Load Balancer不会将HTTP标头转发到EC2实例

使用适用于Python的AWS开发工具包访问AWS Elastic Load Balancer

AWS-Elastic Load Balancing是否实际上阻止LOAD BALANCER故障转移?

为AWS Elastic Load Balancer指定的公共子网中有8个免费IP地址吗?

AWS中的Elastic Load Balancer(ELB)和Route 53

带有Elastic Load Balancer SSL的oAuth

Web部署到AWS Elastic Load Balancer之后的EC2实例

将SSL证书上传到AWS Elastic Load Balancer

AWS Elastic Load Balancer的SSL证书配置错误

AWS Elastic MapReduce和AWS Redshift有什么区别

基于令牌的身份验证是否需要AWS Elastic Load Balancer粘性会话?

EC2关闭时,Elastic Load Balancer的成本过高。我有什么选择?

在 AWS Elastic Beanstalk 上启用 LDAP

Elastic Load Balancer 可以自动扩展吗?

AWS Elastic Load balancer 背后的 Jenkins 实例并启用粘性