我在AWS上使用ElasticBeanStalk作为Parse环境的一部分。 Elastic Beanstalk URL是myparseapp.elasticbeanstalk.com。当用户在我的网站(“www.example.com”)上注册帐户时,Elastic Beanstalk发挥其魔力。
直到我在即将投入生产的网站上启用SSL并对其进行测试之前一切正常。注册失败,我在开发者控制台中看到了这一点:
parse.min.js:16混合内容:页面位于 “https://www.example.com/register.html”是通过HTTPS加载的,但是 请求不安全的XMLHttpRequest端点 'http://myparseapp.elasticbeanstalk.com/parse/users'。这个要求有 被封锁了;内容必须通过HTTPS提供。
我理解为什么我收到错误。我不清楚如何解决它。我读到的所有内容都说“注册您的域名,获得SSL证书,使用Route 53附加CNAME(www),将其应用于负载均衡器。完成。”
嗯... 1)我已经拥有一个用于我网站的域名。 2)我的SSL通过Cloudflare提供服务,这是SSL终止的地方。 3)当我的www.example.com是我的实际网站时,为什么要将CNAME“www”分配给Elastic Beanstalk?不会使用CNAME“www”打破我的网站? 4)我的Elastic Beanstalk实例不在负载均衡器后面。
我是否需要为弹性beanstalk创建一个单独的域?这听起来不对。我可以看到它可能是一个子域名,例如parseapp.example.com。
由于我正在使用Cloudflare(我喜欢它),我宁愿不使用Route 53 ...但如果这是我唯一的选择,那就这样吧。
总而言之,如何使用Cloudflare通过SSL访问我的Elastic Beanstalk应用程序?
提前感谢你的帮助。
答案 0 :(得分:4)
无需查看CloudFlare中的所有配置,以下是我们如何使用CloudFlare和AWS设置Parse系统。
如果Parse Server实例(在elasticbeanstalk
上)无法处理HTTPS:
parse.example.com
设置为别名为myparseapp.elasticbeanstalk.com
的CNAME。 Flexible
。这样做将使所有example.com
域的请求通过CloudFlare进行,CloudFlare将使用CloudFlare的SSL,但随后CloudFlare将以HTTP或HTTPS将该请求路由到您的elasticbeanstalk.com
。 https://parse.example.com/parse
(如您的CNAME中所定义)。这将使您的Ajax请求看起来像:https://parse.example.com/parse/users
而不是之前的URL。如果您可以在实例上设置SSL证书,则可以配置CloudFlare,为您提供可在实例上安装的Origin Certificates
(请参阅Crypto
下的Origin Certificates
标签)。这些证书用于保护CloudFlare和源服务器之间的连接,在您的情况下是ElasticBeanstalk。如果您这样做,那么您仍应按照上述步骤操作,但不要在SSL上选择Flexible
,而是使用Full
。