2011-07-28 18 views
3

私は2つのアプリを持っています。現在の2つの異なるポートで実行されます。2つのNode.jsアプリケーションサーバーをどのように組み合わせるか。

script1.js:

var express = require('express'), 
    app = require('express').createServer(

     express.cookieParser(), 
      // Parses x-www-form-urlencoded request bodies (and json) 
      express.bodyParser() 
    ) 
    ; 

app.get('/s1/output', function(sReq, sRes){ 
    // set cookie 

    sRes.send('<div>Out from 1!</div>'); 
}); 

app.listen(3000)。ここ

と、それは2つの異なるポート上で個別に実行され、何の問題もない。.. script2.js

var express = require('express'), 
    app = require('express').createServer(

     express.cookieParser(), 
      // Parses x-www-form-urlencoded request bodies (and json) 
      express.bodyParser() 
    ) 
    ; 

app.get('/s2/output', function(sReq, sRes){ 
    // set cookie 

    sRes.send('<div>Out from 2!</div>'); 
}); 
app.listen(3001); 

okです。

今すぐ。物語は、私は生産のためのポート80を使用することができます。システム管理者は3000やその他のポートを開きたくない。

コードをマージする代わりに。 (実際には、私の実際のコードはたくさんあり、script1とscript2の設定が異なっています)、ポート80で両方を作るにはどうすればいいですか?呼び出し/ s1 /出力はscript1に行き、/ s2/outputはscript2に行きますか?

私は別のスクリプトを持つことを考えています。 script80.jsはポート80で動作します。 であり、script1とscript2の両方が必要です。

しかし、問題は、スクリプト1とスクリプト2からエクスポートする必要があることです。 I必要があります:あなたがポート80でnginxのリスニングを使用し、2へのトラフィックをプロキシ逆にすることができます

app.get('/s1/*', function (res, req)) { 
    // and what do now? app1(res) ? 
} 

MMMM

答えて

15

このサーバーを指しているドメインまたはサブドメインを持っている場合は、あなたもvhostミドルウェアを使用することができます

app.use(express.vhost('s1.domain.com', require('s1').app)); 
app.use(express.vhost('s2.domain.com', require('s2').app)); 

app.listen(80); 

コンプリート例:https://github.com/visionmedia/express/blob/master/examples/vhost/app.js

+1

更新されたURL:https://github.com/visionmedia/をexpress/blob/master/examples/vhost/index.js –

5

define all get/post methods, and then, 
module.exports.app =app? 

とscript80.jsで、私はそのようなsoemthingを行う必要がありますその背後にある別の特急アプリサーバー。

location /s1/ { 
    rewrite /s1(.*) $1 break; 
    proxy_pass http://localhost:3000; 
} 

location /s2/ { 
    rewrite /s2(.*) $1 break; 
    proxy_pass http://localhost:3001; 
} 

あなたが質問しているようにこれを手動でコードすることもできますが、なぜ車輪を再発明するのですか?

関連する問題