亚马逊AWS EC2 GoLang

时间:2014-11-25 18:02:23

标签: amazon-web-services amazon-ec2 go

我有一个小的Go网络服务器,我已部署在亚马逊网络服务上,但我无法上班。

我的EC2实例同时包含公共和实时已分配私有IP地址,但我无法启动Go服务器。

如果我在localhost上提供它,它可以工作,但显然我无法连接到它,所以我试图将它分配给公共IP,但它崩溃而不会丢失任何错误。

http.ListenAndServe("public_ip", nil)

任何想法如何从这里开始?

2 个答案:

答案 0 :(得分:5)

我不确定您的服务器在没有丢失任何错误的情况下崩溃是什么意思。确保您记录错误:

log.Println(http.ListenAndServe(addr, nil))

这应该会让你知道为什么它不起作用。还有什么吗?

例如,在端口<上运行时没有root权限的1024,我可以看到:

2014/11/25 19:14:51 listen tcp :80: bind: permission denied

现在,如果您在地址:8080上运行服务器,您应该监听所有接口。您可以从本地主机测试服务器。如果可行,请通过为您的实例修改security group,确保可以通过此端口上的Internet访问您的计算机。

如果它仍然无效,请告诉我们崩溃的内容和更多内容。

答案 1 :(得分:3)

要检查几件事:

  • 您的公共IP在本地计算机上不存在(它是NAT),监听私人地址或全部为0.0.0.0。
  • 如果是从localhost连接但不是远程连接,请确保:

    • 实例的安全组具有允许端口和源的入站规则。
    • 如果它位于VPC上,则说明VPC连接到Internet网关并且有一条路由到它。