Exécution de plusieurs applications de nœud (Express) sur le même port

J'ai plusieurs applications de nœuds (construit sur le framework Express).

Maintenant, je les ai placés comme ça-

  • /var/www/app1
  • /var/www/app2
  • /var/www/app3

Maintenant, je veux exécuter ces 3 applications sur le même port (dire 8080). Est-ce possible ?

Une chose à noter est que, chaque application a des routes communes comme celles-ci -

  • app.get('/', func...);
  • app.get('/about', func...);
  • app.post('/foo', func...);
  • app.post('/bar', func...);

Fondamentalement, je veux le faire comme vous peut faire avec Apache / PHP setup.

Donc avec une pile de lampe quand vous avez -

  • /var/www/app1
  • /var/www/app2
  • /var/www/app3

Vous pouvez facilement y accéder en tant que différentes applications de -

  • localhost/app1
  • localhost/app2
  • localhost/app3
48
demandé sur Gajus 2012-06-27 16:16:25

3 réponses

Vous pouvez utiliser app.use():

app
  .use('/app1', require('./app1/index').app)
  .use('/app2', require('./app2/index').app)
  .listen(8080);
52
répondu user1437328 2016-03-14 17:41:37

Vous pouvez les exécuter en tant qu'applications séparées écoutant différents ports, puis avoir un proxy (comme https://github.com/nodejitsu/node-http-proxy / ) Tout servir sur 8080 en fonction de l'URL demandée.

Comme:

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'
  }
};

Fonctionne comme un charme pour moi ( http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/). Je n'étais pas si désireux de les avoir montés en tant que sous-applications, comme suggéré dans les commentaires parce que je voulais qu'ils s'exécutent indépendamment...

27
répondu Max Girkens 2012-06-27 14:05:59

Vous pouvez créer une application principale(disons app) parallèle à vos applications, et l'initialiser les applications secondaires (dans votre cas app1, app2, app3) en utilisant app.utilisation(", require('./ app1 / yourApp.js').

Toutes vos applications (app1, app2, app3) doivent créer app et l'exporter en utilisant var app = module.exportations = express(); Vous n'avez pas besoin de créer une instance de serveur ou d'application d'appel.écoutez dans tous les sous-Applications; toutes les sous-applications peuvent être servies via le port d'écoute de l'application principale.

0
répondu Kamesh Chauhan 2017-05-28 14:26:39