2012-01-30 4 views
4

Я искал всюду для ответа на это, но не имел никакой удачи.Не удалось добраться до node.js извне

Я установил 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 прослушивает соединения.

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

+0

как о программном обеспечении брандмауэра OS? –

ответ

3

Вы, скорее всего, находитесь за сетевой адрес перевода (NAT).

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

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

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

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

+0

Это фактически размещено на Slicehost. – tptcat

+0

@tptcat Затем порт должен быть открытым, я не знаю, что сказать - попробовали ли вы диагностировать проблему подключения с помощью 'nmap'? – Borealid

+0

Я получил его для работы. Я понял, что все, что я использовал для добавления порта 8080 в iptables, на самом деле не принимал (я полагаю), потому что у меня был настоящий файл iptables, который использовался для правил. Как только я добавил порт 8080 в свой файл iptables, все было хорошо. – tptcat