我在 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 open afs3-fileserver)
telnet ec2-public-dns.xx.xx.xx.amazon.com 7000
(这次是从我的本地机器:我收到“连接被拒绝:无法连接到远程主机”)
奇怪的是:如果我在端口 7000 上启动 Nginx,那么它就可以工作,我可以从 EC2 外部进行连接!而 WebSocket 服务器在端口 80 上失败,而 Nginx 在该端口上工作正常。
对我来说,这表明 WebSocket 服务器存在问题,但我可以从 EC2 内部成功连接到它。(并且它在不同的 VPS 帐户上运行良好)。
我该如何进一步调试?如果有人能阻止我抓狂,我将不胜感激 :)
答案1
您的服务是否可能仅在环回接口上监听?
在你的亚马逊盒子上运行
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