2011-12-16 4 views
2

同じポート番号で複数のサイト(ホスト名)を提供したいという要件があります。マルチテナントをサポートするnode.jsアプリケーションの開発方法

これらのサイトは同じコードファイルを共有していますが、異なるサイト構成とファイルアップロードフォルダを持つ点のみが異なります。

基本的には、さまざまなドメインをホストできるCMSです。通常、各ドメインには独自のテーマと設定、もちろんdb接続があります。

私にこれに関するいくつかの指示を与えることができる人は誰ですか?ありがとう非常に ありがとう。

+0

?あなたが説明していることは確かに可能ですが、具体的な詳細を尋ねるなら、より良い指導を受けるでしょう。 – maerics

+0

さて、私はnode.jsでcmsアプリケーションを開発していますが、私はこのCMSアプリケーションが異なるドメイン名を提供できるようにしたいと思いますが、それぞれのドメインは独自のテンプレートファイルとdb接続などを持ちます。 – haohello

+1

[ノード - http - プロキシ](https://github.com/nodejitsu/node-http-proxy) – Raynos

答えて

1

各サイトには独自のプロセスとポートが必要です。ホスト名に応じてリクエストをプロキシする必要があります。

各ポートを特定のポートにプロキシする場合は、node-http-proxyまたはbouncyを使用できます。 https://github.com/visionmedia/express/blob/master/examples/vhost/app.js

+0

vhostの機能はこの点で有望に見える – haohello

+0

はい、確かに私のアドバイスは、ノードのhttp-proxyまたは弾力性のある、個別に監視することができるようにプロセスを分けておく方が良いので、それは良い方法です。 – alessioalex

+0

これは、リバースプロキシサーバーとしてnginxを使用することとかなり似ていると思いますが、これは簡単です。 – haohello

1

単一のHTTPサーバコードベース(virtual hosting参照)から複数のドメインを簡単にサポートすることができます。ハンドラにロジックを実装するだけで、リクエストホストを検査できます(例: Host HTTPヘッダー)、その値に基づいて条件付きで動作します。次に、任意の数のDNS名を使用してサーバーを指し示すことができます。

はここに例を示します

あなたは特に何の方向/助けを必要としない
http.createServer(function (request, response) { 
    var host = request.headers['Host']; 
    if (host == 'domain1.com') { 
    // Execute logic based on that host. 
    } else if (host == 'domain2.com') { 
    // Execute other logic... 
    } 
}).listen(8080); 
2
var subdomains = require('express-subdomains') 
    , express = require('express') 
    , app = Express.createServer() 

// example: api.example.com/user -> '/api/user' 

subdomains 
    .use('api') 
    .use('other.vanity.domain') 

app.use(subdomains.middleware) 

app.get('/api/user' function (req, res, next) { 
    // .. 
}) 

app.listen() 

https://github.com/tblobaum/express-subdomains

+0

このフォーマットのホストでは、この動作は「http://mypage.mysite.superhost.ext/'? – jcolebrand

+0

これはreq.headers.hostを調べて、バニティドメインとサブドメインの両方に一致します –

関連する問題