2013-08-07 4 views
2

Я новичок в системах NGINX и WebSocket, но, согласно моим требованиям к проекту, мне нужно проверить некоторые сложные вещи, чтобы закончить.Nginx load balancer websocket issue

Я пытаюсь создать один пример с помощью NGINX, который обрабатывает мой WebSocket (порт: 1234) и HTTP-запросы (порт: 80), используя тот же Url (url load balancer).

Я использую три сервера NGINX, один как Load Balancer (10.0.0.163) и другие два в качестве моего сервера приложений, где я установил свои реальные API, 10.0.0.152 и 10.0.0.154 соответственно. Прямо сейчас, я настроил WebSocket на своих серверах приложений.

В соответствии с приведенной выше конфигурацией все мои запросы будут передаваться через 10.0.0.163 (балансировщик нагрузки), и его прокси-сервер передает запрос (HTTP/WebSocket) на мой сервер приложений (10.0.0.152/154).

Примечание: Каждый сервер приложений содержит отдельный Nginx, PHP, WebSocket

Здесь по умолчанию (место нахождения:/и т.д./Nginx/сайты-доступные/файл) для 10.0.0.154 сервера, который обрабатывает WebSocket и HTTP запросы на тот же домен.

server{ 
    listen 80; 
     charset UTF-8; 
     root /var/www; 
     index index.html index.htm index.php 
     server_name localhost 10.0.0.154 ; 
    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 
    location/{ 
      try_files $uri $uri/ @proxy; autoindex on; 
    } 
    location @proxy{ 
     proxy_pass http://wb1; 
    } 
    location =/ { 
       proxy_pass http://wb;  
       proxy_http_version 1.1; 
       proxy_buffers 8 16k; 
       proxy_buffer_size 32k; 
       proxy_set_header Upgrade $http_upgrade; 
       proxy_set_header Connection "upgrade"; 
       proxy_set_header Host $host; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header  Referer     $http_referer; 
     proxy_redirect off; 

     } 

} 

После файлов по умолчанию (место нахождения:/и т.д./Nginx/сайты-доступные /) для балансировки нагрузки на 10.0.0.163.

upstream wb{ 
    server 10.0.0.154; 
    server 10.0.0.152; 
} 

server{ 
    listen 80; 
     charset UTF-8; 
     root /var/www; 
     index index.html index.htm index.php 
     server_name 10.0.0.163 ; 

    location/{ 
      try_files $uri $uri/ @proxy; autoindex on; 
    } 
    location @proxy{ 
     proxy_pass http://wb; 
    } 
    location =/ { 
       proxy_pass http://wb;  
       proxy_http_version 1.1; 
       proxy_buffers 8 16k; 
       proxy_buffer_size 32k; 
       proxy_set_header Upgrade $http_upgrade; 
       proxy_set_header Connection "upgrade"; 
       proxy_set_header Host $host; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header  Referer     $http_referer; 
     proxy_redirect off; 

     } 

} 

Я обнаружил, что, балансировки нагрузки работает должным образом для HTTP запросов, но это не может продолжать свои запросы WebSocket к серверу приложений.

Я не знаю, что я здесь отсутствует .. Если вы, ребята, можете помочь мне было бы здорово appriciate

+0

Какую версию nginx вы используете? – VBart

+0

@VBart Я использую версию nginx-1.4.1. – Rizvan

+0

@VBart - После отладки кода я получаю соединение, установленное и отключенное через 30 секунд. Я получаю сообщение об ошибке «Ответчик не отвечает». – Rizvan

ответ

1

Я видел, конфигурация выглядит правильным. Я думаю, вы должны проверить свой балансировщик нагрузки & на конфигурацию или версии вашего сервера приложений. Это может быть проблема несовместимости.

+1

Ваш правый @sanjay ... Я проверил обе версии LB и приложения. Я решил эту проблему. – Rizvan

Смежные вопросы