Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何配置aws-ec2实例以运行playframework 1.2.7应用程序_Java_Amazon Ec2_Playframework_Ubuntu 14.04 - Fatal编程技术网

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

Java 如何配置aws-ec2实例以运行playframework 1.2.7应用程序,java,amazon-ec2,playframework,ubuntu-14.04,Java,Amazon Ec2,Playframework,Ubuntu 14.04,我已经将playframework 1.2.7 web应用程序部署到aws-ec2 ubuntu实例。由于80或8080抱怨无法绑定到这些端口,因此在端口8081上启动了应用程序。如何通过aws安全组或ubuntu本身配置ubuntu实例,这样我就不必将端口8081添加到aws提供的公共url或公共ip的末尾。 我不想这样做: example.com:8081 / ip4:8081 但我只想用: example.com / ip4 以访问应用程序。 请告诉我这方面需要帮助。问题是在Ubunt

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

example.com:8081 / ip4:8081
但我只想用:

example.com / ip4
以访问应用程序。
请告诉我这方面需要帮助。

问题是在Ubuntu上,<1024个端口具有特权。这意味着普通用户对此无能为力。要在端口80上启动播放,只需以root用户身份启动即可无论如何,由于可能存在安全问题,以root用户身份启动Web服务器不是最佳做法。

作为普通用户,我建议在您想要的任何非特权端口上启动它,使用弹性负载平衡器(ELB)将端口80(例如443)上的所有入站流量重定向到您的播放端口。在创建ELB时,只需使用AWS web界面即可实现这一点

因此,用户将使用Amazon自动分配的dns名称在端口80上访问调用ELB的play实例

流程示例: 用户浏览器-->-->您的\u play\u服务器\u ip:8081

只需确保与play server实例关联的安全组将接受来自ELB的8081入站流量(您可以使用创建ELB时分配的amazon id识别ELB)

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

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

非常感谢Andrea的教育,它确实解决了这个问题。