Я использую Nginx 1.10.1
для моего приложения, чтобы сбалансировать соединения на Websocket
.
Например, приложение A
(многопроцессный) установить Websocket
связи с B1
, B2
через Nginx
так, чтобы соединения могли быть сбалансированы.
При его использовании иногда, даже если мое приложение отправляет сообщения через Websocket
, конечная точка (B1
или B2
) не получает никаких сообщений и через некоторое время Nginx
печатает сообщение журнала ошибок recv() failed (110: Connection timed out) while proxying upgraded connection
.
Ниже моя конфигурация для Nginx
.
Почему это происходит и как это исправить? Что-то вроде тайм-аута соединения по сети может привести к этой ситуации?
worker_processes 2;
error_log /app_log/sangmin/nginx/error.log info;
pid /app_log/sangmin/nginx/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
client_body_buffer_size 5m;
access_log /app_log/sangmin/nginx/access.log;
upstream s2s_host{
hash $remote_port;
server 10.2.150.211:8080 max_fails=0 fail_timeout=10s;server 10.2.150.212:8080 max_fails=0 fail_timeout=10s;
}
server {
listen 10.2.14.195:10002;
location = /s2s {
proxy_read_timeout 365h;
proxy_send_timeout 365h;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://s2s_host;
}
}
}