Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nginx TCP (WebSockets) Timeout / Keepalive Config

I am using nginx version: nginx/1.0.12

My nginx.conf looks like this:

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

My application seems to be dropping websocket connnections every 75 sec (or so) which I think is because of Nginx's default keepalive config. How do increase the timeout?

like image 829
Sameer Segal Avatar asked May 11 '12 11:05

Sameer Segal


2 Answers

I tried the websocket_*_timeout which are not supported on nginx 1.7.1 (it gives: unknown directive).

However setting a high proxy_*_timeout works:

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

7d means 7 days, see official nginx configuration reference

Additionally you probably only have to set the proxy_read_timeout 7d; as that's the one that usually matter unless the server behind the proxy is very slow.

like image 178
Wernight Avatar answered Sep 19 '22 13:09

Wernight


these brillant guys had the same problem and solved it ....

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

also, here in the original repo for that module is more instructions from the module author.

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

it basically amounts to adding websocket_*_timeout instructions in the server directive:

 server {       ....       websocket_connect_timeout ######;      websocket_send_timeout #####;      websocket_read_timeout #####;       ....           } 
like image 44
sirvon Avatar answered Sep 18 '22 13:09

sirvon