我在Amazon EC2(Fedora Core)上运行一个简单的WebSocket服务器。 我已经使用ec2-authorize打开了相关的端口,并检查它是否已打开。 Iptables绝对没有运行。 但是我无法连接到EC2以外的端口。
我试过以下(我的服务器端口7000上运行):
telnet ec2-public-dns.xx.xx.xx.amazon.com 7000
(来自EC2:连接好)
nmap localhost
(输出包括行:7000 / TCP打开afs3文件服务器)
telnet ec2-public-dns.xx.xx.xx.amazon.com 7000
(这次从我的本地机器:我得到“连接被拒绝:无法连接到远程主机”)
奇怪的是,如果我在端口7000上启动Nginx,那么它工作,我可以从外部EC2连接! WebSocket服务器在端口80上失败,Nginx工作正常。
对我来说,这表明WebSocket服务器的问题,但我可以从EC2内成功地连接到它。 (而且它可以在不同的VPS帐户上正常工作)。
我怎样才能进一步debugging呢? 如果有人能阻止我把头发撕掉,我会非常感激:)
你的服务有可能只在loopback接口上侦听?
在你的亚马逊盒子上运行
netstat -lanp|grep LISTEN|grep 7000
你期望有这样的东西:
tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 2216/abc
而不是
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 13798/abc