2012-05-11 11 views
14

Sto usando nginx version: nginx/1.0.12Nginx TCP (WebSockets) Timeout/Keepalive Config

mio nginx.conf assomiglia a questo:

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

mia domanda sembra essere caduta COLLEGAMENTI DI websocket ogni 75 secondi (o giù di lì) che penso sia dovuto alla configurazione keepalive predefinita di Nginx. Come aumentare il timeout?

Grazie

+0

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

+0

Avevo provato prima: ho aggiunto keepalive 32 alla riga 20 (sotto il server 127.0.0.1:9000) e ottengo nginx: [emerge] direttiva sconosciuta "keepalive" in /usr/local/nginx/conf/nginx.conf: 20 –

+0

@DmitryPaskal, se rimuovo la direttiva upstream (non sono ancora in grado di bilanciare il carico) e aggiungo un passaggio proxy nel tag del server, allora cosa dovrei fare? –

risposta

4

questi ragazzi brillanti avuto lo stesso problema e risolto esso ....

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

anche, qui in pronti contro termine originale per quel modulo è più istruzioni da parte dell'autore del modulo.

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

fondamentalmente equivale ad aggiungere websocket _ * _ istruzioni timeout nella direttiva server:

server { 

    .... 

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

    .... 

     } 
26

Ho provato il websocket_*_timeout che non sono supportati su nginx 1.7.1 (perché faccia: sconosciuta direttiva).

impostazione Tuttavia un alto proxy_*_timeout opere:

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

7d significa 7 giorni, vedere official nginx configuration reference

Inoltre, è probabilmente sufficiente impostare la proxy_read_timeout 7d; come quello è quello che di solito importa meno che il server dietro il il proxy è molto lento.

+0

Ho provato lo stesso, e sta funzionando bene ... Ma in Firebug (aggiungere per Firefox), sta dando errori dicendo: "NetworkError: 404 non trovato - http: // localhost/...... "e" Firefox non può stabilire una connessione al server su ws: // localhost/..... " –

+0

Il' websocket _ * _ timeout' richiede che nginx sia compilato con il modulo 'nginx_tcp_proxy_module' da https://github.com/yaoweibin/nginx_tcp_proxy_module – isapir

+0

risparmi la mia giornata grazie – onalbi