0

次の構成でリバースプロキシとしてnginxをセットアップしました。

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include  mime.types;

    default_type  application/octet-stream;
    keepalive_timeout  65;

    map $http_upgrade $connection_upgrade {
        default  upgrade;
        ''  close;
    }

    server {
        listen  8080;

        server_name  localhost;

        add_header  X-Cache-Status  $upstream_cache_status;

        location /node/ {
            proxy_http_version  1.1;
            proxy_pass   http://127.0.0.1:8000/;
            proxy_redirect  off;
            proxy_set_header  Connection  $connection_upgrade;
            proxy_set_header  Upgrade  $http_upgrade;
        }
    }
}

次のコードで接続しています。

socket = io.connect('http://localhost:8080', {
    'resource': 'node/socket.io'
});

接続すると、約 15kb を超えるメッセージがノードによって受信されないことを除いて、すべてが正常に機能します。Nginx は、アクセス ログまたはエラー ログに何も記録しません。

nginx の構成の問題だと確信していますが、この動作に影響する設定は見つかりませんでした。client_body_buffer_size size、、、、およびproxy_buffersを試しましproxy_buffer_sizeた。tcp_nodelaylarge_client_header_buffers

nginx にこれらのメッセージのドロップを停止させるにはどうすればよいですか?

4

1 に答える 1

1

問題はプロキシバッファに関係していたと思います。十分に高く設定していなかっただけです。以下は、5MB 前後のメッセージに対して現在機能しています。

proxy_buffers 8 2m;
proxy_buffer_size 10m;
proxy_busy_buffers_size 10m;
于 2013-11-10T05:54:08.163 に答える