1

次のファイルシステム構造があるとします。

/app/            Main application folder
  /app.js        Server JS file ran by node.js
  /public        Folder containing files for public website (port 80)
    /index.html
    /js/
      /game.js
  /admin/        Folder containing files used by local network system (port X)
    /index.html
    /js/
      /screen.js
  /share/        Folder containing files to be used by public website OR lan
    /js/
      /jquery.js

最終結果は次のadmin/index.htmlようになります。

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/screen.js"></script>

つまり、異なる場所から 2 つのファイルを読み込んでいます。ここでの考え方は基本的に「ファイルが入っているか確認し/share、入っていなければポートに合わせてフォルダから読み込んでみる」です。

そして、これが私が使用している現在のコードです:

var connect = require('connect'),
    sourcePublic = connect().use(
        connect.static(__dirname + '/public', { maxAge: 86400000 })
    ),
    sourceAdmin = connect().use(
        connect.static(__dirname + '/admin', { maxAge: 86400000 })
    ),
    sourceShare = connect().use(
        connect.static(__dirname + '/share', { maxAge: 86400000 })
    ),
    serverPublic = http.createServer(sourcePublic).listen(80),
    serverAdmin  = http.createServer(sourceAdmin).listen(90);
// ok, how do I use sourceShare?

PS:このシステムは、http://host/(おそらくドメインまたは静的 IP) を介して世界中からアクセス可能であり、ローカル ネットワークを介して を介してアクセス可能である必要がありますhttp://host:90/

ポート 90 のものはシステムに損傷を与えることはありませんが (単なる出力画面です)、人々が外部からアクセスできないようにしたいと思います (ルーターとサーバー間でポート 90 転送がないことを確認することで簡単に実行できます)。 )。

4

1 に答える 1

2

Connect ミドルウェアはスタック可能であるため、必要なハンドラーをすべて積み重ねるだけで、必要な結果を得ることができます。パブリック サーバーは/publicおよび/shareハンドラーを取得し、admin は/adminおよび/shareハンドラーを取得します。

そのため、公開サーバーへのリクエストは、/publicフォルダーの下のリソースを検索し、見つからない場合は/shareフォルダーの下を検索します。また、管理サーバーも同様に行います。

var connect = require('connect'),
    sourcePublic = connect().use(
        connect.static(__dirname + '/public', { maxAge: 86400000 })
    ).use(
        connect.static(__dirname + '/share', { maxAge: 86400000 })
    ),
    sourceAdmin = connect().use(
        connect.static(__dirname + '/admin', { maxAge: 86400000 })
    ).use(
        connect.static(__dirname + '/share', { maxAge: 86400000 })
    ),
    serverPublic = http.createServer(sourcePublic).listen(80),
    serverAdmin  = http.createServer(sourceAdmin).listen(90);
于 2012-10-02T09:13:10.960 に答える