Я создал новый экземпляр, добавил те же группы безопасности как и раньше в 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
сообщает мне, что он существует, но переадресация портов не применяется.
Ваш сервер nodejs прослушивает локальное устройство обратной петли 127.0.0.1, как вы можете видеть в netstat
вывод. 127.0.0.1:8080
Вам нужно изменить сервер nodejs, чтобы слушать 0.0.0.0
Оказалось, что это проблема с сервером nodejs, мне пришлось открыть его для внешних запросов. Поскольку он работал на localhost, я не думал, что это будет проблемой.
Так что примерно так:
app.listen(8080, '0.0.0.0', (err) => {
...
В 0.0.0.0
гарантирует, что он также отвечает на внешние IP-адреса.