2011-04-09 9 views
15

私の仕事は、Apacheを実行しているubuntuサーバー(10.10)でいくつかの内部Webアプリケーションを実行します。私は現在、別のWebアプリケーションを開発中で、カスタム構築のnode.js Webサーバーの開発を真剣に考えています。これをやりたいと思っための私の推論は次のとおりです。node.jsにサブドメインを送信する

  1. スピード/スケーラビリティ
  2. セキュリティ - ページ数ではなく、ちょうど彼らが求めるものは何でも(悪意のある)ユーザーにサービスを提供するのは、スイッチ...ケースで提供されます。
  3. セットアップが楽です - これはオープンソースのプロジェクトであり、node.jsはapache/IIS/etcを扱うよりも、ユーザーが設定する方がずっと簡単です。

私の質問は、私がポート80を聞いているサーバーで、特定のサブドメインをnode.jsに渡す方法です。私はapache仮想ホストを使ってそれを渡す方法についての記事をいくつか見てきましたが、それはnode.jsを使う目的を破るようです。私がApacheを通過する必要がある場合、Apache/IISを回避するための3つの理由のすべてが無効になりました。

私は別のポート(:8080?)を使うことができますが、エンドユーザーの観点からは、カスタムポートを入れなければならないことはかなり混乱しています。任意の代替アイデア?

おかげ

答えて

5

ノードをポート80にバインドし、サブドメインをターゲットとするトラフィックを処理し、それ以外の場合はApacheのリバースプロキシとして使用しますか?

+0

あなたは、このための知っている何かいいのNode.jsモジュール/拡張やチュートリアル?または少なくとも検索するには良いキーワードですか? – jwegner

+0

[ノードhttpプロキシ](https://github.com/nodejitsu/node-http-proxy)はこのトリックを行う必要があります。 – Adrien

4

は私がゼロから始めましょう:

あなたはDNSを持っています。そして、DNSサーバは1つのDNSを1つのIPにマッピングします!

その後、http://ためとhttps://用のポート443上のport 80の接続を待機し、コンピュータ上で実行されているapacheを持っています。 http://example/は実際にはhttp://example:80/の要求です。

node.jsを使用して、Apacheと同じポート上の同じマシンで待機することはできません。そのため、ポート8080を使用することは実行可能です。

また、サブドメインを別のIPにマップすることもできます。ここで注意する点は、パブリックIPアドレスを取得する必要があることです。

4

Apacheとnode.jsの両方からポート80を提供することはできません。 Apacheをreverse proxyとすることは効率的ではないので、このシナリオではnginxが普及しています。 nginxベースのリバースプロキシ以外の代替方法は、Khezがnode.jsプログラムlistenと異なるIPアドレスにサブドメインをマッピングすることを提案して、おそらくApacheのリバースプロキシとしてnode.jsを使用することです。

1

新しいサイト用に仮想ホストをapacheに設定し、node.jsが使用するローカルホストとポートに永続的なリダイレクトを追加することができます

これは、私が他のいくつかの仮想ホストと私のノードを持つサーバー上で行う方法です。ポート3000上で実行中のJSアプリケーション:

がNameVirtualHost *:80

[簡潔にするために省略し、他の仮想ホスト]

...

ServerNameのmynewsite.com に、RedirectMatch http://localhost:3000(*)。 $ 1

+1

私はこれが一歳だと知っています...実際にはこれは機能しますか?私はこの回答に0のアップボックスがあることに気付きました。他のすべての記事は、OPが求めていることは不可能だと言います。 –

2

socket.ioノードが実行されている場合、また、いくつかのapacheの改造を有効にしてください:a2enmodプロキシ

  1. a2enmod proxy_balancer
  2. a2enmod proxy_express
  3. a2enmod proxy_http
ファイル内の

/etc/apache2/sites-available/chat.example.com.confそしてもちろん


<VirtualHost *:80> 
    ServerName chat.example.com 

    <Location "/"> 
     ProxyPreserveHost On 
     ProxyPass http://localhost:3000/ 
     ProxyPassReverse http://localhost:3000/ 
    </Location> 
</VirtualHost> 

service apache2 reload

関連する問題