2016-02-22 8 views
6

私は今、このための良い解決策を探して1週間インターネットを検索してきました。最初に私はhttp-masterについて読んだが、インストールに問題があった。それから、機能がなく、設定が簡単ないくつかのものを見ました。または答えがすべて古くなったNodeJS複数のWebサイト

私たちはNodeJSでWebサイトを開発したいと考えていますが、現在はテスト用に3つ、開発用に2つ、プロダクション用に2つあります。これらはそれぞれ同じサーバー上でホストされています。現在、同じドメイン名でポートは異なるApacheサーバーです。私たちは別のドメイン名を使って作業している別のウェブサイトを持っています。

質問:NodeJSを使用してすべてのサイトなどを提供する最良の方法は何ですか?今後は、NodeJSのすべてのアプリケーションを開発したいと考えています。

サーバー仕様: のWindows Server 2012 R2 二つのコア 4ギガバイトのRAM

+0

私は、VirtualHost定義とmod_proxyディレクティブを見て、ノードが動作しているがLAMP環境にあるポートを割り当てます。 Windowsについてわからない... – Bosworth99

+0

[異なるドメインの同じIP /サーバーで複数のNode.jsサイトをホストするにはどうすればいいですか?](http://stackoverflow.com/questions/19254583/how-do-i -host-multiple-node-js-sites-on-the-same-ip-server-with-different-domain)には、Node.jsを使用した複数のサイト戦略のための優れた回答が既にあります。 –

+0

@DigitalSeaそれは近いですが、私のサーバーは現在WindowsとApacheを実行しています。私がすでに持っているものを使うのはいいですね。受け入れられた答えは、それを達成する方法の例を示しました。 –

答えて

7

非常に効果的である。しかし、同じことがまた、Apacheで達成することができます。基本的に

あなただけのそれぞれを実行します別のポートの下にあるアプリケーション、およびドメイン名のプロキシオーバーリクエストに基づいています。ジンクス

## Upstream www.example.com ## 
upstream examplelive { 
     server 8081; # nodejs server running on port 8081 
} 

## Upstream dev.example.com ## 
upstream exampledev { 
     server 8082; # nodejs server running on port 8082 
} 

## www.example.com ## 
server { 
    listen  80; 
    server_name www.example.com; 

    access_log /var/log/nginx/log/www.example.access.log main; 
    error_log /var/log/nginx/log/www.example.error.log; 

    ## send request back to examplelive ## 
    location/{ 
    proxy_pass http://examplelive; 
    proxy_set_header  Host   $host; 
    proxy_set_header  X-Real-IP  $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 


## dev.example.com ## 
server { 
    listen  80; 
    server_name dev.example.com; 

    access_log /var/log/nginx/log/dev.example.com.access.log main; 
    error_log /var/log/nginx/log/dev.example.com.error.log; 

    location/{ 
     proxy_pass http://exampledev; 
     proxy_set_header  Host   static.example.com; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

次のapacheの例が有効です。

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.example.com 

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:8081/ 
      ProxyPassReverse http://localhost:8081/ 
    </Location> 

</VirtualHost> 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName dev.example.com  

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:8082/ 
      ProxyPassReverse http://localhost:8082/ 
    </Location> 

</VirtualHost> 
+0

Apacheの例がありますか? –

+0

@BrandonWilsonは、Apacheを使用した例も追加しました。それがあなたのために働くかどうか見てください。 –

+0

偉大な仕事の先生、私は私の現在のApacheの設定でこれを働かせることができました、ありがとうございます。 –

0

複数のドメインをホストしている私の好ましい方法は、常にあなたが別のドメイン名を一致させることができますエクスプレス、とvhostを使用することでした。このサーバーを指す複数のドメインを取得する手間を通過する必要はありません場合は

var mailapp = connect() 
var staticapp = connect() 

// create main app 
var app = connect() 

// add vhost routing to main app for mail 
app.use(vhost('mail.example.com', mailapp)) 
app.use(vhost('assets-*.example.com', staticapp)) 

は、私は1人のプライマリ名(例:foo1.bar.com, foo2.bar.comに複数のサブドメインを使用してまで、あなたのDNSにCNAMEレコードを使用していることを見つけますこれらのサブドメインへのポイントは、設定はとても簡単ですので、nginxのは良い選択です。あなたは、リバースプロキシを使用したい。

関連する問題