2

issnodeで実行されているノードアプリのweb.configファイルでRewriteルールを使用して、server.jsファイルをポイントしています。myapp/*はserver.jsを指します。

    <rule name="myapp" enabled="true">
      <match url="myapp/*" />
      <action type="Rewrite" url="server.js" />
    </rule>

これはうまく機能していますwww.mywebsite.com/myapp/は私のアプリを実行するためにロードします。私が望んでいたのは、www.mywebsite.com /が私のアプリを実行するように、Webサイトのルートからリダイレクトすることでした。そこで、web.configファイルを変更しました

    <rule name="myapp" enabled="true">
      <match url="/*" />
      <action type="Rewrite" url="server.js" />
    </rule>

つまり、これはserver.jsを実行し、静的なhtmlファイルを提供しています。唯一の問題は、htmlファイルから外部ファイル(css、js、画像など)を参照することです。リクエストごとに500を取得するだけです。これを使用して静的ファイルを提供しています

        var libpath = require('path');
        var _path = "."; <-- This seems to be the problem


        var uri = url.parse(req.url).pathname;
    var filename = libpath.join(_path, uri);
    fs.readFile(filename, "binary", function (err, file) {
            if (err) {
            res.writeHead(500, {
                "Content-Type": "text/plain"
            });
                 res.write(err + "\n");
                 res.end();
                return;
            }

         var type = mime.lookup(filename);
            res.writeHead(200, {
                "Content-Type": type
            });
         res.write(file, "binary");
         res.end();
        });

    break;

だから私の質問は、静的ファイルを提供するためにノードアプリ/サーバーのルートを指す方法です。

ありがとう

城野

4

2 に答える 2

5

iisnode で静的コンテンツを提供する最善の方法は、IIS 静的ファイル ハンドラーが node.js ではなく静的コンテンツの要求を処理するように URL 書き換えモジュールを構成することです。IIS で静的コンテンツを提供すると、キャッシングに関するカーネル レベルの最適化と JavaScript コードを壊す必要がないため、node.js メカニズムを使用してこれらのファイルを提供するよりもパフォーマンスが大幅に向上します。

これを実現するボイラープレート web.config 構成については、https://github.com/tjanczuk/iisnode/issues/160#issuecomment-5606547を参照してください。

于 2012-05-09T17:57:34.060 に答える