如何配置aws-ec2实例来运行playframework 1.2.7应用程序

时间:2016-08-28 06:32:17

标签: java amazon-ec2 playframework ubuntu-14.04

我已将playframework 1.2.7 web应用程序部署到aws-ec2 ubuntu实例。由于80或8080抱怨无法绑定到这些端口,因此在端口8081上启动了应用程序。如何通过aws安全组或ubuntu本身配置ubuntu实例,这样我就不必将端口8081添加到公共URL的末尾或aws提供的公共ip。 即我不想这样做:

calc (100% / counter(steps))

但我只想使用:

example.com:8081 / ip4:8081

访问该应用程序。 我需要帮助。

1 个答案:

答案 0 :(得分:1)

问题在于Ubuntu端口< 1024是特权。这意味着普通用户无法使用它。要在端口80上开始游戏,您只需将其作为 root 用户启动即可。 无论如何,由于可能存在安全问题,以root用户身份启动网络服务器并非最佳做法。

我建议在普通用户的任何非特权端口上启动它,使用Elastic Load Balancer(ELB)重定向端口80上的所有入站流量(例如443) )到你的游戏端口。在创建ELB时,您可以使用AWS Web界面完成此任务

因此,用户将使用亚马逊自动分配的DNS名称到达您在端口80上调用ELB的播放实例。

示例流程 用户浏览器 - > http://your-elb-dns-name.com - > your_play_server_ip:8081

只需确保与您的播放服务器实例相关联的安全组将接受来自ELB的8081上的入站流量(您可以使用创建期间分配的amazon ID识别您的ELB)

使用此ELB方法的另一个巨大优势是您可以将其用作反向代理来隐藏您的ec2-instance(s)ip(s)到Internet 。事实上,如果您使用ELB,您还可以避免在创建期间为您的ec2实例分配公共IP。 ELB不需要知道公共IP,因为它可以访问您的ec2实例启动的虚拟私有云(VPC)

如果您不想使用ELB,另一种可能的方法是在您的ec2实例上安装NGINx或Apache以充当反向代理,但我认为您应该使用Amazon Web服务来实现这一点。如果您需要将播放服务器的特定资源隐藏到互联网,您可能需要使用内部NGINX或Apache反向代理。

https://aws.amazon.com/it/elasticloadbalancing/