私の目標は、ノードjsサーバの1つのインスタンス内に複数のノードJS "apps"を持つことです。たとえば、従来のPHPホスティングでは、wwwディレクトリに異なるフォルダを置くことができ、それらのフォルダは別々のルートとして動作します。私がfolder1とfolder2をwww.example.com/folder1またはwww.example.com/folder2に行くサブディレクトリとして持っていれば、独自のindex.htmlとすべてを持つアプリケーションになります。ノードJS "apps"を1つのサーバで分離する
ノードJSでは、個々のサーバーサイドPHPスクリプトを呼び出す代わりに、実行中のメインサーバーを呼び出すため、少し異なります。 socket.ioのようなものでは、socket( 'on' ...)とsocket( 'emit' ...)を使ってサーバーと通信し、特定のスクリプトを呼び出すのではなく、サーバーと通信します。
私はこれは、例えばファイル構造であるかもしれないノードJS
以内にPHPの機能を模倣してみたい:私はapp.jsファイルが内のすべてのルートを持っているだろうと想像
main
|--sites
|--site1
| |--index.js
| |--public
|--site2
| |--index.js
| |--public
|--landing
|--index.js
|--public
|--app.js
それ。 「/」は着陸フォルダーに、「/ site1」はsite1フォルダーなどに指定されていました。
しかし、私が望むのは、これらの「アプリ」がそれぞれ分離されていることです。 index.jsは、そのアプリに隔離されたサーバーになります。そのアプリケーション内のルーティングとすべてが、新しいapp.jsのようにすべて再実行されますが、別々のノードアプリではなく、サブディレクトリだけです。
これは可能ですか?実装のためのコード例をいくつか教えていただけますか?
あなたがAppと言うとき、あなたは表現することを言いますか?そうであれば、あなたのルートで別のエクスプレスアプリを作成し、ルートにアタッチしてください。 – Keith
これを実装するには、ノードアプリケーションの前にプロキシを置いて、プロキシがホスト名やヘッダなどに基づいて適切なホスト/ポートにトラフィックを送信できるようにします。 – Aknosis
@Keith少し詳しく説明できますか?このようなもの: 'app.use( '/ firstsite'、require( './ sites/firstsite'))'? これらの各フォルダのindex.jsファイルは、そのアプリケーションの独立したサーバーとして機能するのですか、それでもapp.jsと通信しようとしていますか?いくつかのコード例で答えることができますか? –