同じシステム上で複数のExpressサーバーをどのように編成する必要がありますか?

StackOverflow https://stackoverflow.com/questions/9332865

質問

1つのサーバーを使用して、複数のドメインに分散されている複数のNode.jsWebアプリをホストしています。私の現在の慣行は、異なるポートでアプリごとにExpressサーバーを実行し、要求を正しいポート/ Expressサーバーにルーティング(リダイレクト)するだけのベースサーバーを実行することです。これは機能しますが、ベースサーバーがすべてのHTTPリクエストをルーティングし(手動でリダイレクトすることにより)、ユーザーにはアプリが[hostname.com]:8000でホストされていると見なされることを意味します。

少し調べてみたところ、 http-proxy ルーティングのニーズに対応しますが、同じシステムで複数のExpressサーバーを実行するためのベストプラクティスがあるかどうかを知りたいのですが。これが私がそれをすることを計画している方法です:

各Webアプリには、完全なExpressフォルダー構造(app.js、ルート、ビューなど)を備えた独自のフォルダーがあります。アプリはドメインごとにグループ化されるため、フォルダー構造の例は次のようになります。 ジェネラコディセタグプレ

各app.jsをノードで(または forever で)個別に実行する必要があります。私は現在使用しています)、それぞれが内部で異なるポートを使用する必要があり、アプリ間のリダイレクトはターゲットアプリのポートに向けられます。

それが私の現在の計画です。それの問題は何ですか、そして私はどのような落とし穴を避けるべきですか? 最も重要なことは、この問題に対する確立された解決策がありますか?Node.js / Expressを使用して同じシステムで複数のWebアプリをホストする問題ですか?

編集:最終的にはWebSocketとHTTPSを使用する予定ですが、セットアップでサポートできる帯域幅の量は私にとってほとんど重要ではありません。これは開発サーバーです(少なくとも今のところ)。 WebSocketの問題を提起してくれたDavidEllisに感謝します。

2回目の編集:EhevuTovとDavid Ellisの回答に感謝します。どちらも、非常に役立ちました。私はまだアプリケーションの全体的な構造を決定しています。その質問はこのStackOverflowの質問

3番目の編集:この質問を投稿してから、私は道を歩みました(ただし、まだまだ先があります)。 私のGitHubリポジトリにあるこのファイルをチェックしてください。この質問への回答から学びました!

役に立ちましたか?

解決

Expressは Connect を使用しているため、Connectの仮想ホストミドルウェアを使用できると確信しています。他の製品の他の仮想ホストモジュールと同様に動作します。適切なコードをテストして表示するための複数のドメインはありませんが、次のようなものだと思います。 ジェネラコディセタグプレ

1台のExpressサーバーでは不十分な場合は、APIからNode.Clusterを使用することを検討してください。それでも不十分な場合は、現在の方法では、NginxなどのasnycリバースプロキシをExpressサーバーの前に配置し、プロキシをExpressサーバーにポイントします。

他のヒント

WebSocket(または実際にはHTTP 1.1機能)を使用する必要がない場合は、代わりにNginXをプロキシとして使用できます

利点は、ノードよりもNginXが処理できる総負荷が高いことです(基本的に、静的にコンパイルされ、この種のことに特化しています)が、データをストリーミングする機能が失われます(一度に小さなチャンクを送信します)。

小規模なサイトの場合、または将来必要になる機能がわからない場合は、node-http-proxyを使用し、プロキシがサーバーのボトルネックであることを証明できる場合にのみNginXに切り替えることをお勧めします。幸い、後で必要になった場合でもNginXをセットアップするのは難しくありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top