2017-11-03 165 views
1

设置:通过ECS,Elastic Load Balancer在前面部署在Amazon EC2实例上的Play Framework应用程序。我想只允许应用程序的HTTPS请求。AWS上的HTTPS-only Play Framework ECS

我发现了几种使用HTTPS和Play的方式,但是对于(dockerized)Play应用程序,最佳做法有哪些优缺点?

  1. 直接在Play中启用HTTPS(在配置文件中使用-Dhttps.port或https.port)。
  2. 设置前端Web服务器(例如Nginx)并让它处理HTTP-> HTTPS重写(example)。
  3. 在Play中实现请求过滤器并重定向应用程序内的请求(as described here)。

我不那么热衷于使用第一个版本,因为我必须在每个实例上单独管理证书,但为了完整起见,我列出了它。 我认为第三种方法的一个优点必须是系统架构比​​第二个版本更简单,并且需要更少的配置。使用第三种方法有什么缺点(例如性能)?

回答

1

如果您使用的是负载平衡器,那么您应该从Amazon Certificate Manager服务申请一个免费的SSL证书,然后将该证书附加到负载平衡器。

要启用HTTP到HTTPS重定向,您只需检查负载平衡器传递到服务器的x-forwarded-proto标头。如果是http则返回301与https。你链接的文章涵盖了这部分。

+0

感谢关于证书管理器的提示。我知道转发可以通过我链接的文章来实现。不过,我想知道应该采用哪种方法来实现转发 - 直接在Play中或前面的专用网络服务器上?我应该注意到这两种方法的优点(例如性能)是否有优势? – Paco1

+0

这两种方法都没有真正的优势/劣势。如果您尚未使用反向代理服务器,那么我不会担心设置一台服务器,因为它会增加复杂性并使用一些服务器的RAM。 –