2010-07-03 9 views
9

Ich besitze zwei Domains, abc.com und xyz.com (nicht die echten, die ich besitze, aber sie funktionieren als Beispiel). Beide zeigen auf die gleiche IP-Adresse. Hier finden Sie meine Server js-Datei:node.js :: Was macht Hostname in `listen` Funktion?

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

ich dann besuchen http://abc.com:8000/ und http://xyz.com:8000/ und sie beide die Webseite anzuzeigen. Ich dachte, dass ich die Seite nur auf abc.com sehen könnte, da ich das als Hostname eingestellt habe.

Wenn ich jedoch '127.0.0.1' als Hostnamen verwende, kann ich die Seite nur über wget auf dem Server anzeigen.

Also was tut der Hostname Parameter tun?

Antwort

6

Das folgende Codesegment innerhalb net.js, dass die Funktion hören definiert ist relevant:

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

Also im Grunde eine URL als Hostnamen Parameter nicht Shared Hosting ermöglichen. Alles, was node.js tut, ist die Arbeit für Sie, einen Hostnamen in eine IP-Adresse aufzulösen - und da in meinem Fall beide Domänen auf die gleiche IP verweisen, funktionieren beide.

Für mich, Shared Hosting zu tun, muss ich einen anderen Weg finden.

+10

und haben Sie einen anderen Weg gefunden? –

+1

@pksorensen, gibt es weitere Fragen, die sich mit [virtual hosting] (http://stackoverflow.com/questions/8503841/virtual-hosting-with-standalone-node-js-server) auf Node.js befassen. –

+0

Express.js ist eine Alternative, die das löst. –