绑定:不能分配请求的地址

我最近从Rackspace切换到AWS,并使用freegeopip设置了一个简单的地理定位服务器。 虽然以下命令在新的Rackspace服务器(Ubuntu)上完美工作,但我无法在AWS上工作(尝试过Red Hat和Ubuntu)。 这是我用来设置它的代码:

curl -s https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz | tar -C /opt -zx export GOPATH=$HOME export GOROOT=/opt/go export PATH=$PATH:/opt/go/bin go get github.com/fiorix/freegeoip/cmd/freegeoip $GOPATH/bin/freegeoip -addr="<MY IP ADDRESS>:8080" 

正如我所说的这完美地在我的Rackspace instace上工作,但AWS给我这个错误:

 listen tcp <MY IP ADDRESS>:8080: bind: cannot assign requested address 

我用netstat检查过这个端口,没有任何东西在运行。 我不知道为什么我得到这个错误。 有任何想法吗?

在很多情况下,绑定到0.0.0.0是最好的方法,除非你有一个特定的原因只绑定到一个特定的地址。

但是我认为你正在做的事情是不行的,因为你试图绑定到实例的公共IP地址,你会发现(通过ifconfig )你的IP栈不知道。

AWS实例只能在本地识别其私有IP地址,这是您需要绑定的内容。

EC2(传统和VPC)实例公共地址与实例相关联的AWSnetworking基础架构将1:1 NAT转换为专用地址。

AWS在您的实例和Internet之间运行networking地址转换。 因此,AWS实例可能可以通过IP地址08.08.08.0808访问,但是服务器实际上configuration为使用88.88.88.88。 我需要做的是绑定到我用ifconfigfind的服务器的内部IP。