node.js :: ¿qué hace el nombre de host en la función `listen`?

Poseo dos dominios, abc.com y xyz.com (no los reales que poseo, pero funcionan como ejemplo). Ambos apuntan a la misma dirección ip. El siguiente es mi archivo js servidor:

var sys=require('sys'), http=require('http'), settings=require('./settings'); var srv = http.createServer(function(req, res) { var body="Hello World!" 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); 

Luego visito http://abc.com:8000/ y http://xyz.com:8000/ y ambos muestran 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 coloco ‘127.0.0.1’ como nombre de host, solo puedo ver la página a través de wget en el propio servidor.

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

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(); } }); 

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

Para que yo haga hosting compartido, debo encontrar otra forma.