Socket.IO的Nginx反向代理以特定大小丢弃消息

时间:2013-11-09 10:14:31

标签: node.js nginx proxy socket.io

我将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 sizeproxy_buffersproxy_buffer_sizetcp_nodelaylarge_client_header_buffers

如何让nginx停止删除这些消息?

1 个答案:

答案 0 :(得分:1)

我想问题确实与代理缓冲区有关,我只是没有将它们设置得足够高。以下是5mb左右的消息。

proxy_buffers 8 2m;
proxy_buffer_size 10m;
proxy_busy_buffers_size 10m;