Назад | Перейти на главную страницу

Когда происходит ошибка Nginx, ошибка recv () (110: истекло время ожидания соединения) при проксировании обновленного соединения

Я использую 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;
                        }

            }
}