Настройка чисто http-сервера Node.js на порт 80
Я использую свежую установку Centos 5.5. У меня установлен и работает Node (я просто использую Node - без apache или nginx.), Но я не могу понять, как сделать простой сервер на порту 80. Node работает и прослушивает порт 80. Я ' Я просто использую демо-приложение:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(80, "x.x.x.x");
console.log('Server listening to port 80.');
Когда я посещаю мой IP, он не работает. Я получил свой ipaddress, используя ifconfig. Я пробовал разные порты. Так что должно быть что-то, чего мне не хватает.
Что мне нужно настроить на моем сервере, чтобы это работало? Я хотел бы сделать это без установки apache или nginx.
Люк
Edit-- Итак, я установил nginx и запустил его, чтобы увидеть, связан ли он с узлом, и я не вижу его страницы приветствия. Так что это определенно имеет отношение к серверу.
Правильно ли я получаю IP-адрес, запустив: ifconfig и прочитав inet addr в eth0?
3 ответа
Вы запускаете его как root? В противном случае вы не сможете подключиться к порту 80.
Что произойдет, если вы измените номер порта на номер (бесплатный) выше 1024?
Кроме того, что произойдет, если вы укажете IP-адрес для прослушивания, как в примере здесь?
Как сказано в моем комментарии, код работает (я запускал его как root на FreeBSD).
В Linux 127.0.0.1 (он же localhost) связан с интерфейсом "lo". Интерфейс "eth0" должен иметь другой IP-адрес.
Остановка узла; выключите nginx (чтобы порт 80 был свободен); вместо этого поместите адрес eth0 (не 127.0.0.1) в приведенный выше код; перезапустите узел и попробуйте снова подключиться к порту 80 на другом IP-адресе.
Подсказка: проверьте с помощью "netstat -ltn", с каким IP-адресом связан порт 80, и попробуйте подключиться к этому адресу.
Я не знаю, беспокоит ли это вас по-прежнему, но однажды я столкнулся с той же самой ошибкой на моем Debian 6.0: я мог соединиться с локальным браузером (той же машиной), используя:
links http://127.0.0.1:80
Тем не мение,
firefox http://[public_ip]:80
с любого другого компьютера на указанную систему Debian, что привело к "отказ в соединении". Итак, я просто оставил настройку ip внутри моего демонстрационного кода:
//init
var http = require('http');
var port = 8080 ;
var now = new Date();
// create server
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World - this is node.js\n');
res.write('Date on server: ' + now.toGMTString());
res.end('\nbye!');
}).listen(port, "");
console.log('Server running at port: ' + port);
надеюсь, что это помогает, это сделало это для меня. Обратите внимание, что я изменил настройку порта на 8080, потому что там уже был другой сервер, работающий на порту 80.