Не могу получить доступ к Node.JS через интернет - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь получить доступ к простому приложению node.js / express через Интернет, но не могу понять, почему оно не работает.Я могу получить к нему доступ, используя http://localhost:3000 и http://192.168.x.x:3000, но не используя свой внешний IP-адрес.

Порт 3000 открыт на моем маршрутизаторе (дважды проверено с помощью инструментов проверки портов онлайн-порта), и я добавил в брандмауэр правило, разрешающее порт (Windows 10).

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, "0.0.0.0")

netstat, похоже, предполагает, что порт 3000 разрешен через брандмауэр, верно?

C:\WINDOWS\system32>netstat -n -a

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:3000            0.0.0.0:0              LISTENING

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я наконец понял проблему!Это связано с тем, что я тестировал соединение внутри локальной сети на маршрутизаторе, который не поддерживает закрепление ( см. Пункт 2 в этом ответе stackoverflow ).Простой доступ к приложению на устройстве вне моей локальной сети делает свое дело.

0 голосов
/ 06 декабря 2018

Вам нужно перенаправить этот порт или создать туннель, чтобы использовать его через Интернет.По умолчанию порты заблокированы.Проблема не в том, что сервер не слушает, проблема в том, что он не может быть обнаружен извне.

  • Для переадресации порта добавьте правило пересылки к маршрутизатору [Подробнее]
  • Для туннелирования вы можете использовать ngrok

Таким образом, вы можете подключиться к серверу на http://<your_external_ip>:<forwarded_port>

...