我有一个Elastic Beanstalk Rails应用程序。我还有两个域:
api.example.com
www.example.com
我希望api.example.com
只能通过SSL https://api.example.com 进行访问。
但是,我希望www.example
可以通过普通的http。
目前,我的负载均衡器上有两个侦听器,一个在端口443
上,另一个在80
上。
问题是您现在还可以在没有SSL的情况下访问api
,这是不受欢迎的。
我的问题是否有服务器级解决方案?
答案 0 :(得分:0)
Elastic Beanstalk本身不允许您在应用程序上解耦SSL和非SSL路由。以下是您可以做的一些事情。
将Elastic Beanstalk应用程序分离到两个单独的Elastic Beanstalk应用程序中,一个用于SSL,另一个用于非SSL流量。
更改Rails应用程序中的路由设置。这篇文章解释了如何强制某些路由的SSL:Rails 3 SSL Deprecation。您可以为您的API强制使用SSL,并让www
流量为非SSL
不要使用Elastic Beanstalk并使用自动缩放功能在EC2中托管您的应用程序,并将其设置为Apache或nginx的前端,并创建您的特定重写规则以确保每个URL都是以他们希望的方式提供服务(www到HTTP和API到SSL)