Nginx TCP (WebSockets) Тайм-аут/Keepalive Config
Я использую nginx version: nginx/1.0.12
Мой 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 каждые 75 секунд (или около того), которые, как мне кажется, обусловлены конфигурацией по умолчанию для nginx. Как увеличить таймаут?
Спасибо
Ответы
Ответ 1
Я попробовал websocket_*_timeout
, которые не поддерживаются в nginx 1.7.1 (он дает: неизвестную директиву).
Однако установка высоких proxy_*_timeout
работает:
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
7d
означает 7 дней, см. официальную ссылку на конфигурацию nginx
Кроме того, вы, вероятно, должны установить только proxy_read_timeout 7d;
как тот, который обычно имеет значение, если сервер за прокси-сервером очень медленный.
Ответ 2
у этих блестящих парней была такая же проблема и она была решена...
NGINX для изменения прокси-серверов и включения SSL (wss://)?
также здесь, в исходном репо для этого модуля больше инструкций от автора модуля.
https://github.com/yaoweibin/nginx_tcp_proxy_module/issues/28
это в основном сводится к добавлению инструкций websocket _ * _ timeout в директиве сервера:
server {
....
websocket_connect_timeout ######;
websocket_send_timeout #####;
websocket_read_timeout #####;
....
}