我创建了一个新实例,添加了相同的安全组与之前在 EC2 中一样,选择与之前相同的 VPC(据我所知一切都完全相同),但现在我得到:ERR_CONNECTION_REFUSED
当我尝试连接到端口时8080
我nodejs server
在端口上有一个简单的运行8080
:
netstat -anp | grep :8080
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2438/node
这:sudo lsof -i
输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dhclient 640 root 5u IPv4 9825 0t0 UDP *:bootpc
dhclient 640 root 20u IPv4 8531 0t0 UDP *:15190
dhclient 640 root 21u IPv6 8532 0t0 UDP *:13517
sshd 950 root 3u IPv4 10114 0t0 TCP *:ssh (LISTEN)
sshd 950 root 4u IPv6 10116 0t0 TCP *:ssh (LISTEN)
sshd 1140 root 3u IPv4 1708 0t0 TCP ip-x-x-x-x.eu-west-1.compute.internal:ssh->x-x-x-x:49442 (ESTABLISHED)
sshd 1194 ubuntu 3u IPv4 1708 0t0 TCP ip-x-x-x-x.eu-west-1.compute.internal:ssh->x-x-x-x:49442 (ESTABLISHED)
node 1800 ubuntu 12u IPv6 10541 0t0 TCP *:8545 (LISTEN)
node 2438 ubuntu 16u IPv4 12327 0t0 TCP localhost:http-alt (LISTEN)
和: sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2438/node
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 950/sshd
tcp6 0 0 :::22 :::* LISTEN 950/sshd
tcp6 0 0 :::8545 :::* LISTEN 1800/node
udp 0 0 0.0.0.0:15190 0.0.0.0:* 640/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 640/dhclient
udp6 0 0 :::13517 :::* 640/dhclient
我现在完全不知所措了。
我尝试多次重新启动实例,重新添加安全组,但没有任何帮助。
它ERR_CONNECTION_REFUSED
告诉我它存在,但是没有应用端口转发。
答案1
正如您在输出中看到的,您的 nodejs 服务器正在监听本地环回设备 127.0.0.1 netstat
。
127.0.0.1:8080
您需要更改 nodejs 服务器来监听0.0.0.0
答案2
原来是 nodejs 服务器出了问题,我不得不将其暴露给外部请求。由于它在本地主机上运行,所以我不认为这会是个问题。
像这样:
app.listen(8080, '0.0.0.0', (err) => {
...
确保0.0.0.0
它也能响应外部 IP。