Ich habe mehrere Node-Anwendungen (auf Express-Framework aufbauen).
Jetzt habe ich sie so platziert -
/var/www/app1
/var/www/app2
/var/www/app3
Jetzt möchte ich diese 3 Apps auf demselben Port ausführen (sagen wir 8080). Ist das möglich ?
Eine Sache zu beachten ist, dass jede App gemeinsame Routen wie diese hat -
app.get('/', func...);
app.get('/about', func...);
app.post('/foo', func...);
app.post('/bar', func...);
Grundsätzlich möchte ich es so machen, wie Sie es mit dem Apache/PHP-Setup machen können.
Also mit einem LAMP-Stack, wenn Sie haben -
/var/www/app1
/var/www/app2
/var/www/app3
Sie können leicht als verschiedene Apps von zugreifen -
localhost/app1
localhost/app2
localhost/app3
Sie können app.use()
verwenden:
app
.use('/app1', require('./app1/index').app)
.use('/app2', require('./app2/index').app)
.listen(8080);
Sie könnten sie als separate Apps ausführen, die verschiedene Ports abhören, und dann einen Proxy (wie https://github.com/nodejitsu/node-http-proxy/ ) haben, der alles auf 8080 bereitstellt, abhängig von der angeforderten URL.
mögen:
var options = {
router: {
'foo.com/baz': '127.0.0.1:8001',
'foo.com/buz': '127.0.0.1:8002',
'bar.com/buz': '127.0.0.1:8003'
}
};
Funktioniert wie ein Zauber für mich ( http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/ ). Ich war nicht so sehr daran interessiert, sie als Unter-Apps zu installieren, wie in den Kommentaren vorgeschlagen, weil ich wollte, dass sie unabhängig laufen ...
Sie können eine Hauptanwendung (z. B. eine Anwendung) parallel zu Ihren Anwendungen erstellen und die sekundären Anwendungen (in Ihrem Fall app1, app2, app3) mit app.use ('', required ('./app1/yourApp.js) initialisieren ').
Alle Ihre Apps (app1, app2, app3) müssen eine App erstellen und mit Var app = module.exports = express (); .__ exportieren. Sie müssen keine Instanz des Servers erstellen oder app.listen aufrufen die Teilapps; Alle Unter-Apps können über den Haupt-App-Listen-Port bereitgestellt werden.