PlayFramework HTTPS 仅在 prod 模式下路由,HTTP 在 dev 模式下
Posted
技术标签:
【中文标题】PlayFramework HTTPS 仅在 prod 模式下路由,HTTP 在 dev 模式下【英文标题】:PlayFramework HTTPS routes only in prod mode, HTTP in dev mode 【发布时间】:2011-07-13 20:16:46 【问题描述】:我希望某些路由在生产模式下始终为 HTTPS,但在开发模式下为 HTTP。现在,我知道创建 https 路由的唯一方法是使用:
@@Controller.action().secure()
,但这会将它们硬编码为 https。
这可以在路由中还是通过 application.conf 设置实现?
【问题讨论】:
【参考方案1】:将其工作方式从 Dev 模式更改为 Prod 模式的唯一简单方法是将 Play 保留为仅 HTTP,然后通过使用 nginx、Lighttp 或 Apache 等 HTTP 服务器将整个站点保护为 Prod 模式。
这种方法意味着您的应用程序在两种模式下都保持不变,并且配置是在比您的应用程序更高的层上完成的。
然而,这种方法将意味着您的整个网站将变为 HTTPS,但我实际上并不认为这是一件坏事,事实上它可能会让您的用户对安全性更有信心整个网站。
【讨论】:
+1 适用于所有 HTTPS。如果您有一个通过 HTTP 运行会话的 cookie,那么它在大多数 WiFi 网络上都是一键劫持。 但是混合 HTTP 和 HTTPS 部分的环境呢?一种方法是强制应用程序的特定部分(例如“/secure/...”)使用 https,并让应用程序的其余部分使用 http。 (在像 Nginx 这样的前端代理的帮助下)这很好用,除非我没有找到一个解决方案,可以根据我所在的应用程序的部分,使用给定的方案在模板中呈现 URL。(使用给定的反向路由方案定义) 当然,如果你在 amazon 环境中,我听说 https 上的性能很糟糕,如果你有他们的 ELB 负载均衡器终止它,如果你在你的网络服务器上终止 https 会好得多(我猜有很多权衡)....如果您在亚马逊已经有 10 个网络服务器,最好终止那里,因为您不想仅仅因为启用了 https 而最终得到 10 个 ELB。以上是关于PlayFramework HTTPS 仅在 prod 模式下路由,HTTP 在 dev 模式下的主要内容,如果未能解决你的问题,请参考以下文章
Playframework 中 HTTPS 协议中的重定向控制器方法