2012-05-11 93 views
14

我使用nginx version: nginx/1.0.12Nginx的TCP(网页套接字)超时/保持连接配置

我的nginx.conf如下:

#user nobody; 
worker_processes 1; 

error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 

#pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

tcp { 

    upstream websockets { 
     ## Play! WS location 
     server 127.0.0.1:9000; 
     check interval=3000 rise=2 fall=5 timeout=1000; 
    }  

    server { 
     listen 80; 
     listen 8000; 
     server_name socket.domain.com; 

     tcp_nodelay on; 
     proxy_pass websockets; 
     proxy_send_timeout 300; 

    } 

    # virtual hosting 
    #include /usr/local/nginx/vhosts/*; 
} 

我的应用程序似乎是下降的WebSocket connnections每75秒(左右)我认为这是因为Nginx的默认Keepalive配置。如何增加超时时间?

感谢

+0

查看[wiki](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive)。 –

+0

我以前曾尝试过:我在第20行添加了keepalive 32(在服务器127.0.0.1:9000下),并且在/usr/local/nginx/conf/nginx.conf中获得了nginx:[emerg]未知指令“keepalive”: 20 –

+0

@DmitryPaskal,如果我删除上游指令(我还没有进行负载平衡)并在服务器标签中添加代理服务器通行证,那我该怎么办? –

回答

26

我想这是不支持的nginx 1.7.1的websocket_*_timeout(它提供了:未知的指令)。

但是设置高proxy_*_timeout作品:

proxy_connect_timeout 7d; 
proxy_send_timeout 7d; 
proxy_read_timeout 7d; 

7d装置7天,见official nginx configuration reference

另外,你可能只需要设置proxy_read_timeout 7d;因为这是一个通常此事,除非后面的服务器代理非常缓慢。

+0

我尝试了相同的,它工作正常......但在Firebug(为Firefox添加),它给错误说 - “NetworkError:404 Not Found - http:// localhost/......“和”Firefox无法在ws:// localhost/.....上建立到服务器的连接“ –

+0

'websocket _ * _ timeout'需要使用'nginx_tcp_proxy_module'模块编译nginx从https://github.com/yaoweibin/nginx_tcp_proxy_module – isapir

+0

你节省我的一天感谢 – onalbi