Я использую свежую установку Centos 5.5. У меня установлен и работает Node (я просто использую Node - без apache или nginx.), Но я не могу понять, как создать простой сервер на 80-м порту. Узел работает и слушает 80-й порт. Я ' m просто используя демонстрационное приложение:
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, он не работает. Я получил свой ip-адрес с помощью ifconfig. Пробовал разные порты. Так что должно быть что-то мне не хватает.
Что мне нужно настроить на моем сервере, чтобы это работало? Я бы хотел сделать это без установки apache или nginx.
Люк
Изменить. Итак, я установил nginx и запустил его, чтобы узнать, связан ли он с узлом, и я не вижу его страницу приветствия. Так что это определенно связано с сервером.
Правильно ли я получаю IP-адрес, запустив: ifconfig затем чтение inet адрес под eth0?
Вы запускаете его как root? В противном случае вы не сможете выполнить привязку к порту 80.
Что произойдет, если вы измените номер порта на какой-нибудь (свободный) выше 1024?
Также, что произойдет, если вы укажете IP-адрес для прослушивания, как в примере Вот?
Не знаю, беспокоит ли вас это по-прежнему, однако однажды я столкнулся с той же ошибкой на моем 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-м порту уже был запущен другой сервер.
Как сказано в моем комментарии, код работает (я запускал его как root на FreeBSD).
В Linux 127.0.0.1 (он же localhost) привязан к интерфейсу «lo». Интерфейс "eth0" должен иметь другой IP-адрес.
Остановить узел; выключить nginx (чтобы порт 80 был свободен); вместо этого введите адрес eth0 (а не 127.0.0.1) в приведенный выше код; перезапустите узел и попробуйте снова подключиться к порту 80 на другом IP-адресе.
Подсказка: проверьте с помощью "netstat -ltn", к какому IP-адресу привязан порт 80, и попробуйте подключиться к этому адресу.