Узел 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