jwe*_*rre 9 geolocation rackspace amazon-web-services
我最近从 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"
Run Code Online (Sandbox Code Playgroud)
正如我所说,这在我的 Rackspace 实例上完美运行,但 AWS 给了我这个错误:
listen tcp <MY IP ADDRESS>:8080: bind: cannot assign requested address
Run Code Online (Sandbox Code Playgroud)
我已经用 netstat 检查了这个端口,但上面没有运行任何东西。我不知道为什么会出现此错误。有任何想法吗?
在许多情况下,绑定到 0.0.0.0 是最好的做法,除非您有特定的理由只绑定到特定的地址。
但是我假设您正在做的事情不起作用,因为您正在尝试绑定到实例的公共 IP 地址,您会发现(通过ifconfig)您的 IP 堆栈不知道。
AWS 实例本身只知道它们的私有 IP 地址,这是您需要绑定到的。
与实例关联的 EC2(经典和 VPC)实例公共地址由 AWS 网络基础设施 1:1 NAT 转换为私有地址。
AWS 在您的实例和互联网之间运行网络地址转换。因此,AWS 实例可能可以通过 IP 地址 08.08.08.0808 访问,但服务器实际上配置为使用 88.88.88.88。我需要做的是绑定到我用 ifconfig 找到的服务器的内部 IP。
| 归档时间: |
|
| 查看次数: |
14264 次 |
| 最近记录: |