0

我有一个通过stage在 SBT 中运行部署的 Play 应用程序,然后使用target/start. 我已经将 Nginx 放在它前面,并且基于一个子域,我有两个server块 - 一个用于端口 80,另一个用于端口 443。端口 80 块只是重定向到https端口 443 上的方案。这个一切都很好。

回顾一下:

  • http://play.mydomain.com/重定向到
  • https://play.mydomain.com/这是一个代理http://localhost:9000

但是,如果我只是去http://mydomain.com:9000/,我可以直接访问我的 Play 应用程序。没有 SSL,我无法阻止任何人访问它。

我该怎么办?我是否应该使用 Nginx 将端口 9000 上的任何访问重定向到 SSL 版本的 URL?我应该防火墙端口 9000 并且只允许该端口上的本地请求吗?(如果是这样,我会怎么做?)还有其他我没有想到的处理方法吗?

还有多久,Servlet 3.1 规范发布,我可以将整个事情部署为 WAR?:-)

4

1 回答 1

1

您可以让您的 Play 应用程序仅在本地接口(例如 127.0.0.1)上侦听。这样,nginx 仍然可以代理对它的请求,但外部没有人可以直接访问您的应用程序。不需要额外的防火墙设置。

看起来您可以将附加参数传递给start

$ start -Dhttp.port=9000 -Dhttp.address=127.0.0.1

于 2013-08-27T01:12:01.513 回答