2012-06-29 14 views
5

Używam oprogramowania pośredniczącego do komunikacji ekspresowej/łączącej vhost i jestem nieco zdezorientowany, w jaki sposób należy go użyć. Chcę mieć jeden zestaw tras dla hostów z subdomenami i inny zestaw, aby ubiegać się o hosty bez subdomen.Określanie tras według poddomeny w Expressie przy użyciu oprogramowania pośredniego vhost

W moim pliku app.js mam

var app = express.createServer(); 

app.use...(middlware)... 
app.use(express.vhost('*.host', require('./domain_routing')("yes"))); 
app.use(express.vhost('host', require('./domain_routing')("no"))); 
app.use...(middlware)... 

app.listen(8000); 

a potem w domain_routing.js:

module.exports = function(subdomain){ 

    var app = express.createServer(); 

    require('./routes')(app, subdomain); 

    return app; 
} 

a następnie w routes.js Planuję uruchomić zestawów tras, zależne od tego, czy zmienna subdomeny przekazany jest "yes" lub "no".

Czy jestem na dobrej drodze, czy nie w ten sposób używasz tego oprogramowania pośredniego? Jestem nieco zdezorientowany faktem, że powstają dwie instancje serwera app (ponieważ w ten sposób przykłady w Internecie wydają się działać). Czy zamiast tego powinienem przekazać oryginalną instancję serwera app i zamiast tego użyć zamiast niej oddzielnego routera poddomeny?

Odpowiedz

2

Tak, jesteś na dobrej drodze. Ty powinna mieć inną instancję serwera dla każdego z vhost. Czy to jest http.Server lub express app.

Jeśli przekażesz oryginał app, żądanie wysłane do vhosta zostanie wysłane do oryginalnej aplikacji. Tak więc, jeśli vhost nie ma ścieżek, które nie są używane w oryginalnym serwerze, otrzyma odpowiedź tak, jakby żądanie zostało wysłane na oryginalny serwer.

Z połączyć docs

connect() 
    .use(connect.vhost('foo.com', fooApp)) 
    .use(connect.vhost('bar.com', barApp)) 
    .use(connect.vhost('*.com', mainApp)) 
+0

Dzięki! Innym moim pytaniem jest to, że jeśli określę oprogramowanie pośrednie, które będzie używane w pierwotnej instancji serwera, a następnie użyję oddzielnych instancji serwera dla vhostów, czy oprogramowanie pośredniczące użyte do pierwotnego serwera zostanie przeniesione do vhosta? Czy powinienem zamiast tego używać oprogramowania pośredniego wyłącznie na vhostach (z wyjątkiem oprogramowania pośredniczącego vhost na oryginalnym serwerze) Zasadniczo szukam bezproblemowego sposobu korzystania z oprogramowania pośredniego na wszystkich możliwych vhostach, zamiast konieczności korzystania z tego samego oprogramowania pośredniego każdy z vhostów, który jest swego rodzaju powtarzalnym ... – user730569

+0

Nie, nie musisz używać oprogramowania pośredniego wyłącznie na wszystkich vhostach. Każde oprogramowanie pośrednie, którego chcesz używać dla wszystkich aplikacji, może być '.use''d zanim vhost to' .use''d –

+0

To świetnie! Ale z ciekawości, jak to działa? Chyba jestem trochę zdezorientowany co do 'server.emit (" request ", req, res);' robi za kulisami. – user730569

Powiązane problemy