59

複数のノードアプリケーションがあります(Expressフレームワーク上に構築されています)。

今、私はそれらをこのように配置しました-

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

ここで、これら3つのアプリを同じポート(たとえば8080)で実行したいと思います。それは可能ですか?

注意すべきことの1つは、各アプリには次のような共通のルートがあるということです-

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

基本的には、Apache/PHPのセットアップと同じようにやりたいと思います。

だからあなたが持っているときにLAMPスタックで-

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

-から別のアプリとして簡単にアクセスできます

  • localhost/app1
  • localhost/app2
  • localhost/app3
4

3 に答える 3

65

あなたが使用することができますapp.use()

app
  .use('/app1', require('./app1/index').app)
  .use('/app2', require('./app2/index').app)
  .listen(8080);
于 2012-06-27T14:44:02.170 に答える
36

それらを異なるポートをリッスンする個別のアプリとして実行し、要求されたURLに応じて8080ですべてを提供するプロキシ( https://github.com/nodejitsu/node-http-proxy/など)を使用できます。

お気に入り:

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

私にとって魅力のように機能します(http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/)。コメントで示唆されているように、私はそれらをサブアプリとしてマウントすることにそれほど熱心ではありませんでした。なぜなら、それらを独立して実行したかったからです...

于 2012-06-27T12:30:48.050 に答える
0

アプリと並行して1つのメインアプリ(たとえばアプリ)を作成し、それを使用してセカンダリアプリ(この場合はapp1、app2、app3)を初期化することができます。

app.use('<the_context_you_need>', require('./app1/yourApp.js')

すべてのアプリ(app1、app2、app3)は、アプリを作成し、それを使用してエクスポートする必要があります

var app = module.exports = express();

サーバーのインスタンスを作成したり、すべてのサブアプリでapp.listenを呼び出す必要はありません。すべてのサブアプリは、メインアプリのリッスンポートを介して提供できます。

于 2017-05-28T14:26:39.137 に答える