2012-10-28 17 views
7

Ich plane, drei Sites mit node.js zu erstellen. Ich habe einige gemeinsame Vorlagen unter den Websites. Sollte ich alle drei Sites auf einer einzelnen node.js-Instanz ausführen?Mehrere Websites auf node.js ausführen

Mir ist 'vhost' Middleware bekannt, die es Ihnen ermöglicht, mehrere Domänen auf einem einzelnen http-Server auszuführen. Gibt es eine bessere Möglichkeit, dies zu tun?

Ich habe auch einige statische HTML-Vorlagen und nicht sicher, wie Sie mit diesen in node.js umgehen?

Schließlich würde ich gerne Hosting-Optionen für diese Art von Setup wissen?

+0

aussehen würden Sie nginx verwenden sollten. Sehen Sie sich diesen Beitrag an: http://StackOverflow.com/Questions/5009324/Node-JS-Nginx-and-now – Pardoner

Antwort

14

Ich selbst musste genau das gleiche tun. Was Sie tun möchten, ist eine Art Reverse-Proxy.

Der, den ich hier verwenden: https://github.com/nodejitsu/node-http-proxy

einfach den Proxy-Paket installieren: npm install http-proxy

Was ich tue, ist der Proxy auf dem Server auf Port ausgeführt haben 80. Ich die DNS auf jeder Domain einrichten um auf diesen Server zu zeigen.

Jede Anwendung läuft auf dem gleichen Server (ich verwende Bildschirme).

Zum Beispiel:

MySiteApplication1 - 3001 
MySiteApplication2 - 3002 
MySiteApplication3 - 3003 

dann Ihre Proxy-Server-Datei wie diese

var httpProxy = require('http-proxy'); 

var server = httpProxy.createServer({ 
    router: { 
    'mysite1.com': 'localhost:3001', 
    'mysite2.com': 'localhost:3002', 
    'mysite3.com': 'localhost:3003' 
    } 
}); 

server.listen 80 
+0

Danke Brendan, wo hosten Sie Ihre Knoten-Apps? Wie hat httpProxy in Bezug auf die Leistung funktioniert? Haben Sie statische Daten? Wenn ja, wie gehen Sie damit um? Prost –

+1

Im Hosting auf einem VPS, den ich gekauft habe. So etwas wie Linode ist in Ordnung. Für statische Daten würden Sie wahrscheinlich etwas wie nginx verwenden wollen, aber ich habe keine Probleme festgestellt. Sie könnten 'AB' verwenden, um es zu testen :) – Menztrual

+1

Diese Antwort ist veraltet. 'node-http-proxy' [removed] (https://github.com/nodejitsu/node-http-proxy/issues/652) die Option' router', weil sie "zu einem separaten Modul gehört". ['http-master'] (https://github.com/encharm/http-master) scheint die Antwort darauf zu sein und verwendet' node-http-proxy' intern. – Nateowami

Verwandte Themen