2010-07-03 4 views
9

Tengo dos dominios, abc.com y xyz.com (no los reales que tengo, pero funcionan como un ejemplo). Ambos apuntan a la misma dirección IP. Lo que sigue es mi servidor de archivos JS:node.js :: ¿qué hace el nombre de host en la función `listen`?

var sys=require('sys'), 
    http=require('http'), 
    settings=require('./settings'); 



var srv = http.createServer(function(req, res) { 
    var body="<b>Hello World!</b>" 
    res.writeHead(200, { 
     'content-length': body.length, 
      'content-type': 'text/html', 
      'stream': 'keep-alive', 
      'accept': '*/*' 
      } 
    ); 
    res.end(body); 
    }); 

srv.listen(8000, 'abc.com'); // (settings.port, settings.hostname); 

entonces me visita http://abc.com:8000/ y http://xyz.com:8000/ y ambos mostrar la página web. Pensé que solo podría ver la página en abc.com ya que eso es lo que establecí como nombre de host.

Sin embargo, cuando pongo '127.0.0.1' como el nombre de host, entonces solo puedo ver la página a través de wget en el servidor mismo.

Entonces, ¿qué hace el parámetro de nombre de host do?

Respuesta

6

El siguiente segmento de código dentro de net.js que define la función de escucha es pertinente:

// the first argument is the port, the second an IP  
var port = arguments[0]; 
dns.lookup(arguments[1], function (err, ip, addressType) { 
    if (err) { 
    self.emit('error', err); 
    } else { 
    self.type = addressType == 4 ? 'tcp4' : 'tcp6'; 
    self.fd = socket(self.type); 
    bind(self.fd, port, ip); 
    self._doListen(); 
    } 
}); 

proporcionar Así que, básicamente, una URL como parámetro de nombre de host no permite el alojamiento compartido. Todo lo que node.js hace es hacer el trabajo para que usted resuelva un nombre de host en una dirección IP, y dado que en mi caso ambos dominios apuntan a la misma ip, ambos funcionarán.

Para que yo haga alojamiento compartido, debo encontrar otra manera.

+10

y encontraste otra forma? –

+1

@pksorensen, hay otras preguntas relacionadas con [alojamiento virtual] (http://stackoverflow.com/questions/8503841/virtual-hosting-with-standalone-node-js-server) en Node.js. –

+0

Express.js es una alternativa que resuelve esto. –

Cuestiones relacionadas