Configurando um servidor http puramente Node.js na porta 80

2

Estou usando uma nova instalação do Centos 5.5. Eu tenho o nó instalado e funcionando (eu estou usando apenas o nó - não apache ou nginx.), Mas não consigo descobrir como fazer um servidor simples na porta 80. Nó está em execução e está escutando a porta 80. Eu ' estou apenas usando o aplicativo de demonstração:

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.');

Quando visito meu IP, isso não funciona. Eu obtive meu ipaddress usando o ifconfig. Eu tentei portas diferentes. Então deve haver algo que eu esteja sentindo falta.

O que preciso configurar no meu servidor para que isso funcione? Eu gostaria de fazer isso sem instalar o apache ou nginx.

Luke

Edit-- Ok, então, eu instalei o nginx e o iniciei, para ver se ele está relacionado ou não ao nó, e não vejo sua página de boas-vindas. Então, definitivamente, tem algo a ver com o servidor.

Estou recuperando o endereço IP corretamente executando: ifconfig e lendo o inet addr em eth0 ?

    
por Luke Burns 08.06.2011 / 21:00

3 respostas

5

Você está executando como root? Caso contrário, você não poderá ligar à porta 80.

O que acontece se você alterar o número da porta para algo (grátis) acima de 1024?

Além disso, o que acontece se você especificar o endereço IP para ouvir, como no exemplo aqui ?

    
por 08.06.2011 / 21:07
0

Como dito no meu comentário, o código funciona (eu corri como root no FreeBSD).

No Linux 127.0.0.1 (aka localhost) é obrigado a interface "lo". A interface "eth0" deve ter um endereço IP diferente.
Pare o nó; desligue o nginx (assim a porta 80 está livre); coloque o endereço eth0 (portanto, não 127.0.0.1) no código acima; reinicie o nó e tente conectar-se novamente à porta 80 no outro endereço IP.

Dica: verifique com "netstat -ltn" para qual porta de endereço IP 80 está vinculada e tente se conectar a esse endereço.

    
por 08.06.2011 / 22:36
0

não sei se isso ainda está incomodando você, Uma vez eu encontrei o mesmo erro no meu Debian 6.0: Eu poderia conectar com um navegador local (mesma máquina) usando:

links http://127.0.0.1:80

No entanto,

firefox http://[public_ip]:80

de qualquer outro computador para o sistema Debian nomeado resultou em "conexão recusada". Então, o que eu fiz foi apenas deixar de fora a configuração de ip dentro do meu código de demonstração:

//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);

espero que ajude, que fez isso por mim. Observe que alterei a configuração da porta para 8080 porque já havia outro servidor em execução na porta 80.

    
por 05.07.2011 / 01:00