webentwicklung-frage-antwort-db.com.de

Ausführen mehrerer Node (Express) -Anwendungen auf demselben Port

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
49
user1437328

Sie können app.use() verwenden:

app
  .use('/app1', require('./app1/index').app)
  .use('/app2', require('./app2/index').app)
  .listen(8080);
54
user1437328

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 ...

27
Max Girkens

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.

0
Kamesh Chauhan