2012-05-11 13 views
14

estoy usando nginx version: nginx/1.0.12Nginx TCP (WebSockets) Tiempo de espera/Keepalive Config

Mi nginx.conf se parece a esto:

#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/*; 
} 

Mi aplicación parece estar disminuyendo CONEXIONES WebSocket cada 75 segundos (más o menos) que creo que se debe a la configuración keepalive predeterminada de Nginx. ¿Cómo aumenta el tiempo de espera?

Gracias

+0

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

+0

Lo había intentado antes: agregué keepalive 32 en la línea 20 (en el servidor 127.0.0.1:9000) y obtengo nginx: [emerg] la directiva desconocida "keepalive" en /usr/local/nginx/conf/nginx.conf: 20 –

+0

@DmitryPaskal, si elimino la directiva ascendente (aún no estoy equilibrando la carga) y agrego un pase proxy en la etiqueta del servidor, ¿qué debo hacer? –

Respuesta

4

estos chicos brillant tenían el mismo problema y lo resolvieron ....

NGINX to reverse proxy websockets AND enable SSL (wss://)?

también, aquí en el repositorio original para ese módulo es más instrucciones del autor del módulo.

https://github.com/yaoweibin/nginx_tcp_proxy_module/issues/28

que básicamente equivale a la adición de WebSocket _ * _ instrucciones de tiempo de espera en la directiva de servidor:

server { 

    .... 

    websocket_connect_timeout ######; 
    websocket_send_timeout #####; 
    websocket_read_timeout #####; 

    .... 

     } 
26

Probé la websocket_*_timeout que no están soportadas en Nginx 1.7.1 (Da: directiva desconocida).

Sin embargo establecimiento de un alto proxy_*_timeout obras:

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

7d significa a 7 días, consulte official nginx configuration reference

Además es probable que sólo tiene que establecer la proxy_read_timeout 7d; ya que es el que normalmente importa menos que el servidor detrás de la el proxy es muy lento

+0

Intenté lo mismo, y está funcionando bien ... Pero en Firebug (agregar para Firefox), está dando errores que dicen: "Error de red: 404 no encontrado" - http: // localhost/...... "y" Firefox no puede establecer una conexión con el servidor en ws: // localhost/..... " –

+0

El' websocket _ * _ timeout' requiere que nginx se compile con el módulo 'nginx_tcp_proxy_module' de https://github.com/yaoweibin/nginx_tcp_proxy_module – isapir

+0

me salvaste el día gracias – onalbi