Узел JS не прослушивает порт 1337 на сервере

Я пытаюсь открыть порт на определенном сервере ламп, размещенном в Google, и я подключен к серверу через ssh.

Я перешел по этой ссылке для настройки nvm и последней версии Node JS(v0.12.5). После установки я использовал этот демонстрационный код в файле "server.js" и с помощью команды "node server.js", похоже, что Node JS запущен, и выдает это сообщение "Server ready" на консоли сервера. Теперь проблема в том, что когда я проверяю открытый порт с помощью "netstat -n", я не вижу ни одного открытого порта 1337, каким он должен быть. Я также пытался подключиться через браузер, используя "serverIPaddress:1337", но я получаю сообщение "Conecting...", и тогда ничего не происходит.

Любая идея, где я облажался?? Я также перепутал с IP-адресом сервера (localhost:127.0.0.1) или (globalIPaddress), чтобы поместить в файл server.js.

PS: Пожалуйста, найдите файл server.js ниже.

var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server ready');

3 ответа

Решение

У вас есть две проблемы:

1) "127,0,0,1" означает "локальный хост" - это НЕ подходит, если вы хотите, чтобы удаленные клиенты подключались.

2) порт 1337 может (или не может) быть открыт через брандмауэр. Похоже, это не так.

ПРЕДЛАГАЕМЫЕ ИЗМЕНЕНИЯ:

var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  res.end('Hello World\n');
}).listen(80);
console.log('Server ready');

Предполагается, что на вашем удаленном сервере нет ДРУГОГО веб-сервера, уже связанного с портом 80. Если ваша исправленная программа умирает с ошибкой "используется порт", попробуйте порт 8080. Или порт 8888.

Попробуйте удалить "127.0.0.1" или измените его на 0.0.0.0 - слушать на всех интерфейсах. Подробности смотрите в документации https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback

При текущих настройках сервер принимает соединение только с локального хоста. Также вам нужно настроить брандмауэр, чтобы открыть порт 1337 на удаленном сервере.

Да, я несколько раз пытался отправить на сервер, но иногда это не работает - если вы используете:

"lsof -P -iTCP | grep LISTEN"

вы можете проверить процесс в -bash.

А затем определите, сколько портов работает. Вы можете убить процесс, используя:

"kill -9 process_id".

"Используемый порт" означает, что порт используется другими приложениями или на нем запущена программа.

Как пример:

iTunes иногда не позволяет отправлять сообщения через один и тот же порт.

Для этого лучше закройте приложение и попробуйте отправить его позже.

Просто укажите номер порта для прослушивания, а не номер порта и IP-адрес

var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/plain'
  });
  res.end('Hello World\n');
}).listen(1337);
console.log('Server ready');

если вы хотите использовать IP-адрес, то сервер будет доступен только с локального адреса с URL 127.0.0.1:1337, вы не сможете получить к нему доступ с localhost:1337

Другие вопросы по тегам