Amazon web services 亚马逊AWS EC2 GoLang

Amazon web services 亚马逊AWS EC2 GoLang,amazon-web-services,amazon-ec2,go,Amazon Web Services,Amazon Ec2,Go,我有一个小型的Go web服务器,我已经在Amazon web服务上部署了它,但是我在工作上遇到了麻烦 我的EC2实例同时分配了公共和私有IP地址,但我无法启动Go服务器 如果我在本地主机上提供它,它可以工作,但显然我无法连接到它,所以我尝试将它分配到公共ip,但它崩溃时不会抛出任何错误 http.ListenAndServe("public_ip", nil) 你有什么想法吗 我不确定服务器崩溃而不抛出任何错误意味着什么。确保您正在记录错误: log.Println(http.ListenA

我有一个小型的Go web服务器,我已经在Amazon web服务上部署了它,但是我在工作上遇到了麻烦

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

如果我在本地主机上提供它,它可以工作,但显然我无法连接到它,所以我尝试将它分配到公共ip,但它崩溃时不会抛出任何错误

http.ListenAndServe("public_ip", nil)

你有什么想法吗

我不确定服务器崩溃而不抛出任何错误意味着什么。确保您正在记录错误:

log.Println(http.ListenAndServe(addr, nil))
这会让你知道为什么它不起作用。有什么事吗

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

2014/11/25 19:14:51 listen tcp :80: bind: permission denied
现在,如果您在address
:8080
上运行服务器,您应该正在侦听所有接口。您可以从本地主机测试服务器。如果它可以工作,请通过修改您的实例,确保您的计算机可以从此端口从Internet访问


如果它仍然不起作用,请让我们知道它起了什么作用,并进一步了解坠机情况。

需要检查的几件事:

  • 您的公共IP在本地计算机上不存在(它是无效的),请侦听专用地址或0.0.0.0(全部)
  • 如果是从本地主机连接,但不是远程连接,请确保:

    • 实例的安全组具有允许端口和源的入站规则
    • 如果是在专有网络上,则表明专有网络连接到Internet网关,并且有一条到该网关的路由

  • http.listendServe(“:port”,nil)
    ?这应该侦听所有可用的接口。不,不起作用…EC2安全组中打开的任何内容。您将需要root权限才能在最多1024个端口上运行服务器。确实如此!它现在看起来确实可以工作了,服务器启动了。你是对的,我只是需要sudo。然后修改安全组。谢谢太好了,享受云彩吧!