Невозможно получить доступ к node.js извне - PullRequest
4 голосов
/ 30 января 2012

Я везде искал ответ на этот вопрос, но мне не повезло.

Я установил node.js на моем сервере. Я создал стандартный пример "Hello World", например:

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8080, "0.0.0.0");

console.log('Server running at http://0.0.0.0:8080/');

После запуска скрипта на сервере:

node app.js

Я могу подключиться внутренне к порту 808 и увидеть сообщение Hello World, но когда я пытаюсь подключиться к порту 8080 моего сервера извне, я получаю ошибку «Не удается подключиться к серверу». Я также пробовал это в моей функции прослушивания:

etc..
}).listen(8080, "204.xxx.xxx.xxx");

(с моим реальным внешним IP-адресом) и не повезло.

Я пытался принимать соединения на 8080, добавив это в iptables:

iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

но все же врезался в стену. Когда я запускаю netstat, я получаю:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               

, который, как мне кажется, говорит мне, что порт 8080 прослушивает соединения.

Итак - что я здесь не так делаю?

1 Ответ

3 голосов
/ 30 января 2012

Скорее всего, вы отстаете от трансляции сетевых адресов (NAT).

Если вы используете обычное домашнее интернет-соединение и у вас есть шлюз-роутер, у вас может быть несколько устройств, использующих интернет-соединение вашего дома (подключенных через Ethernet или Wi-Fi), нет?

Но у вас есть только один IP-адрес.

Для этого маршрутизатор позволяет вам подключить out - но не позволяет подключаться к внешним соединениям, инициированным извне (упрощение для релевантности - прочитайте, если вам нужно больше информации).

Вам нужно будет настроить переадресацию порта - вы хотите, чтобы внешний порт 8080 перенаправлял на внутренний IP-адрес вашего компьютера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...