仅在某些子域上使用EC2 Load Balancer SSL

时间:2014-03-25 16:39:51

标签: ruby-on-rails amazon-web-services amazon-ec2 load-balancing

我有一个Elastic Beanstalk Rails应用程序。我还有两个域:

api.example.com
www.example.com

我希望api.example.com只能通过SSL https://api.example.com 进行访问。

但是,我希望www.example可以通过普通的http。

访问

目前,我的负载均衡器上有两个侦听器,一个在端口443上,另一个在80上。

问题是您现在还可以在没有SSL的情况下访问api,这是不受欢迎的。

我的问题是否有服务器级解决方案?

1 个答案:

答案 0 :(得分:0)

Elastic Beanstalk本身不允许您在应用程序上解耦SSL和非SSL路由。以下是您可以做的一些事情。

  1. 将Elastic Beanstalk应用程序分离到两个单独的Elastic Beanstalk应用程序中,一个用于SSL,另一个用于非SSL流量。

  2. 更改Rails应用程序中的路由设置。这篇文章解释了如何强制某些路由的SSL:Rails 3 SSL Deprecation。您可以为您的API强制使用SSL,并让www流量为非SSL

  3. 不要使用Elastic Beanstalk并使用自动缩放功能在EC2中托管您的应用程序,并将其设置为Apache或nginx的前端,并创建您的特定重写规则以确保每个URL都是以他们希望的方式提供服务(www到HTTP和API到SSL)