【问题标题】:Amazon AWS EC2 GoLang亚马逊 AWS EC2 GoLang
【发布时间】:2015-01-23 20:43:49
【问题描述】:

我有一个小型 Go Web 服务器,已部署在 Amazon Web Services 上,但我无法开始工作。

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

如果我在本地主机上提供它,它可以工作,但显然我无法连接到它,所以我试图为其分配公共 ip,但它崩溃而没有抛出任何错误。

http.ListenAndServe("public_ip", nil)

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

【问题讨论】:

  • http.ListenAndServe(":port", nil) 有效吗?这应该监听所有可用的接口。
  • 不,不起作用...
  • EC2 安全组中打开的任何内容。您需要 root 权限才能在 1024 端口上运行服务器。
  • 确实!它现在似乎工作了,服务器启动了。

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


【解决方案1】:

我不确定您的服务器崩溃而没有抛出任何错误是什么意思。确保您正在记录错误:

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

这应该让您了解它为什么不起作用。有什么吗?

例如,在没有root权限的端口

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

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

如果仍然无法正常工作,请让我们知道是什么以及更多关于崩溃的信息。

【讨论】:

  • 你说得对,我只需要 sudo。然后修改安全组。谢谢!
  • 太好了,享受云!
【解决方案2】:

需要检查的几件事:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2011-08-12
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多