3
    var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(9000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:9000/');

nodejsを使い始めるための上記のコードがあります。プロセスを開始してブラウザで実行すると、一度応答が返されますが、その後は応答がありません。再起動するたびに1つの応答が返され、いつものように停止します。これを継続的に実行するにはどうすればよいですか。前もって感謝します!

この問題に関連する情報を追加するだけです。これはnginx confファイルのスニペットです

server {

    listen 80;

    client_max_body_size 2M;


    server_name my_domain;


     root /home/node/My_Folder;
   # access_log  /var/log/nginx.vhost.access.log  main;
    send_timeout 1;

location ~* ^.+\.(jpg|jpeg|JPG|JPEG|GIF|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov|html)$ {
autoindex on;
root /home/node/My_Folder;
expires 30d;

break;
}

location / {
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
        proxy_redirect off;
        #proxy_connect_timeout 50ms;
        #proxy_send_timeout 200ms;
        #proxy_read_timeout 200ms;
        proxy_next_upstream error;
        proxy_pass http://Handler;
        #index no_ads.html no_ads.htm;
        break;
}

}

upstream Handler {
        server 127.0.0.1:8010;
        server 127.0.0.1:8011;
        server 127.0.0.1:8012;
        server 127.0.0.1:8013;
        server 127.0.0.1:8014;
        server 127.0.0.1:8015;
        server 127.0.0.1:8016;
        server 127.0.0.1:8017;
        server 127.0.0.1:8018;
        server 127.0.0.1:8019;
        server 127.0.0.1:9000;
} 

両方使ってみた

ノード app.js 永久に開始 -a app.js

アプリを起動しますが、どちらの方法でも、応答が 1 つしかなく、タイムアウトになります。同じサーバー上で実行されている他のノード アプリがいくつかありますが、それらは正常に動作しているようです。だから私は完全に迷っています

4

1 に答える 1

3

Node.js アプリケーションはポート 9000 で実行されます。

NGinx構成ファイル内に、設定があります

proxy_pass http://Handler;

これにより、着信要求が Node.js アプリケーションにリダイレクトされますが、そこで要求を直接リダイレクトするのではなく、次のように構成されたアップストリームにリダイレクトします。

upstream Handler {
    server 127.0.0.1:8010;
    server 127.0.0.1:8011;
    server 127.0.0.1:8012;
    server 127.0.0.1:8013;
    server 127.0.0.1:8014;
    server 127.0.0.1:8015;
    server 127.0.0.1:8016;
    server 127.0.0.1:8017;
    server 127.0.0.1:8018;
    server 127.0.0.1:8019;
    server 127.0.0.1:9000;
}

NGinx はデフォルトでアップストリームにラウンドロビンを使用するため、11 回のうちの 1 回で NGinx がポート 9000 への接続を試行し (これは機能します)、次の 10 回は存在しないサーバーへのアクセスを試みます。

したがって、接続を確立できず、エラー メッセージが表示されます。

アップストリーム ブロック内の他のすべてのサーバー エントリを削除し、アップストリーム ブロックを完全に削除して、単一の Node.js サーバーをプロキシとして直接構成するか、ポート 8010、8011、... を使用して追加の Node.js サーバーを起動すると、すべてが機能するはずです。 .

アップストリームの構成方法の詳細については、 HttpUpstreamModule のNGinx ドキュメントを参照してください。

于 2013-03-13T06:10:02.340 に答える