web-dev-qa-db-fra.com

Nginx TCP (WebSockets) Timeout / Keepalive Config

J'utilise nginx version: nginx/1.0.12

Mon nginx.conf ressemble à ceci:

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

Mon application semble abandonner les connexions Websocket toutes les 75 secondes (ou plus), ce qui, je pense, est dû à la configuration par défaut de Nginx. Comment augmenter le délai d'attente?

25
Sameer Segal

J'ai essayé le websocket_*_timeout qui ne sont pas pris en charge sur nginx 1.7.1 (il donne: directive inconnue ).

Cependant, en définissant un proxy_*_timeout travaux:

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

7d signifie 7 jours, voir référence officielle de configuration nginx

De plus, il vous suffit probablement de définir le proxy_read_timeout 7d; car c'est celui qui compte habituellement à moins que le serveur derrière le proxy soit très lent.

51
Wernight

ces brillants gars ont eu le même problème et l'ont résolu ....

NGINX pour inverser les websockets proxy ET activer SSL (wss: //)?

ici aussi, dans le dépôt d'origine de ce module, il y a plus d'instructions de l'auteur du module.

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

cela revient essentiellement à ajouter des instructions de délai d'attente websocket _ * _ dans la directive serveur:

 server {

     ....

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

     ....

         }
6
sirvon