使用 https 在 aws 上的 Rails 应用程序
Posted
技术标签:
【中文标题】使用 https 在 aws 上的 Rails 应用程序【英文标题】:Rails app on aws using https 【发布时间】:2015-03-13 08:51:33 【问题描述】:我正在尝试使用 https 访问我的 rails 应用程序(托管在 aws 上)。我按照http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html 上发布的说明进行操作,但最终结果与预期不符,所以我猜我缺少一个步骤。
这些是我做的步骤:
生成的服务器证书具有 CN=*.example.com(不是自签名证书;它是由 godaddy 颁发的证书)。
在我的 AWS Elasticbeanstalk 环境中,我设置了负载均衡器配置,以便安全侦听器端口 = 443,协议为 HTTPS,ssl 证书是我从第 1 步获得的证书的 ID。
在我的 EC2 设置中,我添加了一个入站规则,以允许来自源 0.0.0.0/0 的 https 通过端口 443(对于我的应用程序安全组)。
在我的 Rails 应用配置中,我将生产的 force_ssl 标志设置为 true。
但是,现在当我尝试通过访问 example.com 或 https://example.com 访问我的网站时,它只会无限期加载,并且浏览器状态栏中的消息是“已连接到 example.com...” ,但在那之后它什么也没做。当它最终失败时,浏览器会给我“连接被中断”的错误。
我是否缺少另一个配置步骤?知道我可能做错了什么吗? 问候,
【问题讨论】:
【参考方案1】:感谢HTTPS not working (on AWS Elastic Beanstalk based site) 和Can't access HTTPS site on Elastic Beanstalk after configuring HTTPS in the load balancer(我在发布原始问题时错过了这两个)。
总结这两篇文章,问题在于为负载均衡器设置安全组,而不是应用程序本身。
当您查看安全组时,您应该为您的应用找到一个,并为负载均衡器找到一个单独的组。我最初通过添加入站规则来更改我的应用程序的安全组以允许 https。一旦我将该规则添加到负载均衡器的安全组,它就可以正常工作。
【讨论】:
以上是关于使用 https 在 aws 上的 Rails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS 弹性 beanstalk 负载均衡器在 Rails 上实施 https 连接
AWS Elastic Beanstalk 上的 Rails 应用程序返回 422 并显示“无法验证 csrf 令牌”
在 AWS Elastic Beanstalk / Rails 上配置 HTTPS
AWS Elastic Beanstalk 上的 Rails 应用程序:错误的 nginx 配置