我将AWS上的ElasticBeanStalk用作我的解析环境的一部分。 Elastic Beanstalk URL是myparseapp.elasticbeanstalk.com。当用户在我的网站(“ www.example.com”)上注册帐户时,Elastic Beanstalk发挥了神奇的作用。

在我要在即将投入生产的网站上启用SSL并对其进行测试之前,这种方法一直很好。注册失败,我在开发人员控制台中看到了这一点:


  parse.min.js:16混合内容:位于的页面
  已通过HTTPS加载了'https://www.example.com/register.html',但是
  请求了不安全的XMLHttpRequest端点
  'http://myparseapp.elasticbeanstalk.com/parse/users'。这个要求有
  被封锁;内容必须通过HTTPS提供。


我了解为什么收到错误消息。我不清楚如何解决它。我读到的所有内容都说:“注册域,获取SSL证书,使用Route 53附加CNAME(www),将其应用于负载均衡器。完成。”

好吧... 1)我已经有一个用于我的网站的域。 2)我的SSL是通过Cloudflare服务的,这是SSL终止的地方。 3)当我的www.example.com是我的实际网站时,为什么要为Elastic Beanstalk分配CNAME'www'?不会使用CNAME“ www”破坏我的网站吗? 4)我的Elastic Beanstalk实例不在负载均衡器的后面。

我是否需要为弹性beantalk创建单独的域?听起来不对。我可以看到它可能是一个子域,例如parseapp.example.com。

由于我正在使用Cloudflare(而且我很喜欢),因此我不希望使用Route 53进行操作……但是,如果这是我唯一的选择,那就顺其自然。

因此,总而言之,如何使用Cloudflare通过SSL访问我的Elastic Beanstalk应用程序?

预先感谢您的协助。

最佳答案

在不查看您在CloudFlare中的所有配置的情况下,这是我们如何使用CloudFlare和AWS为Parse设置系统。

如果Parse Server实例(在elasticbeanstalk上)无法处理HTTPS:


使用CloudFlare作为别名为parse.example.com的CNAME设置子域myparseapp.elasticbeanstalk.com
确保云图标为橙色(已打开)。
转到CloudFlare中的“加密”选项卡,并确保将其设置为Flexible。这样做将使对任何example.com域的所有请求都通过CloudFlare,后者将使用CloudFlare的SSL,但是CloudFlare会将请求通过HTTP或HTTPS路由到您的elasticbeanstalk.com
确保您的Parse Server URL现在设置为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

关于ssl - 基于Cloudflare的SSL上的Elastic Beanstalk,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41352583/

10-13 04:19