6

ドイツにある
サーバー Windows Server 2008 / IIS 7
node.js 0.8.22
iisnode 0.2.2 x64

web.config

<configuration>
  <system.webServer>
    <handlers>
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
    </handlers>

    <rewrite>
      <rules>
        <rule name="DynamicContent">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
          </conditions>
          <action type="Rewrite" url="server.js"/>
        </rule>
      </rules>
    </rewrite>

    <iisnode watchedFiles="*.js;lib\*;node_modules\*;styles\*;ui\*;views\*" />

  </system.webServer>
</configuration>

サーバー.js

var port = process.env.NODE_ENV == 'production' ? process.env.PORT : 3000;

require('./lib/server').listen(port);

サイト リンク

問題:
200 応答が返されることもありますが、404 (ファイルまたはディレクトリが見つかりません) が返されることもあります。

ロシア、ドイツ、または米国からリクエストすると、応答は 200
です。中国からリクエストすると、応答が 404 になることがあります (ISP、時間、その他によって異なります)。

404 応答は、iis が server.js を見つけられないように見えます

200 応答の例 (Express VPN を使用し、米国に接続):

2013-04-29 02:42:58 W3SVC1 LOFT4002 188.138.16.31 GET /zazaza - 80 - 180.150.157.51 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.2;+WOW64)+AppleWebKit/537.31+(KHTML,+like+Gecko)+Chrome/26.0.1410.64+Safari/537.31 connect.sid=s%3ABHin0EtiPcJbD6GCeXE2hb_1.mNHhYwIs%2BvLKcJcXc1igMH4O%2FIkuwQdygd1XjN7ediM - test.amelisa.ru 200 0 0 367 530 514

404 エラーの例 (vpn なし、中国からのリクエスト):

2013-04-29 02:32:47 W3SVC1 LOFT4002 188.138.16.31 GET /zazaza - 80 - 112.90.90.18 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.2;+WOW64)+AppleWebKit/537.31+(KHTML,+like+Gecko)+Chrome/26.0.1410.64+Safari/537.31 connect.sid=s%3AdL_RALh0qLd0eLoCxZUk6Po-.N9h97BMFy9%2Fm9tl8lrQd%2FIHQjwpwzEXfWC7f4%2FrHxpY - test.amelisa.ru 404 0 0 1390 532 436

iisnode には 404 リクエストのログもトレースもありません。

このサーバー上のすべての iisnode/node.js サイトで同じ問題が発生します。
しかし、このサーバーの Asp Net Mvc Web サイトはどのような場合でも 200 を返すため、中国のゴールデン シールドの問題ではない可能性があります。

どんな情報でも提供できます。
どんな助けでも大歓迎です。

4

1 に答える 1

1

次のようにテストするソリューションへのルートを作成してみてください。

//my route to test "GET", make sure if your route is "POST"
app.get('/test', function(req, res){
     res.json(true);
});

URL を使用してテストします: http://test.amelisa.ru/test

このエラーは、そのパスへのルートがない場合に発生します。私は同じ問題を抱えていて、解決しました。

お役に立てば幸いです。そうでない場合は、「./lib/server」でコードを共有して、さらに支援してください。

于 2019-08-30T20:44:48.940 に答える