Как установить соединение Socket.IO между двумя серверами соединенных по LAN
Есть два сервера, на каждом установлена: Ubuntu 18.04.2 LTS и панель VestaCP
Сервер №1
Установлен сайт "aaa.ru", на нём подключен Socket.IO:
var socket = io("https://www.aaa.ru:8600/", {secure: false});
Сервер имеет внешний ip: 111.111.111.111 и 2 ethernet:
- Подключен интернет с внешним ip
- Подключен роутер Mikrotik
Сервер №2
Установлен сайт "bbb.ru" и Node.js + Socket.IO, который должен отвечать на запрос с сервера №1.
Локальный ip по которому открывается сайт "bbb.ru" - "192.168.88.253"
Сервер не имеет внешнего ip.
Оба сервера соединены роутером Mikrotik HAP lite (4 порта)
Подключены модули: a2enmod proxy proxy_http proxy_wstunnel
Конфигурация на сайте aaa.ru /home/admin/conf/web/aaa.ru.apache2.ssl.conf:
<VirtualHost 111.111.111.111:8443>
ServerName aaa.ru
ServerAlias www.aaa.ru
ServerAdmin [email protected]
# redirect - который должен перенаправить socket запрос на сервер №2
<Proxy *>
Require all granted
</Proxy>
ProxyRequests off
ProxyVia on
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://192.168.88.253:8600/$1 [P,L]
ProxyPass :8600/ https://192.168.88.253:8600/
ProxyPassReverse :8600/ https://192.168.88.253:8600/
# end
... далее без изменений стандартные настройки VestaCP
Если подключить на одном из сайтов сервера №2 Socket.IO,
и сделать настройки .apache2.ssl.conf - как показано выше,
то всё успешно работает, но с сервера №1 подключения нет, ошибка:
GET https://www.xxx.ru:8600/socket.io/?EIO=3&transport=polling&t=N5zkMiN net::ERR_CONNECTION_REFUSED
Если в терминале сервера №1 ввести: curl https://192.168.88.253:8600,
то Node.js с сервера №2 - успешно отвечает.
Как я понимаю, ProxyPass настроенный на сервере №1 не может получить доступ к локальному ip сервера №2, хотя через терминал на сервере №1 с помощью команды "curl" - всё работает, Node.js с сервера №2 отвечает.
Как исправить настройки, что бы Socket.IO с сайта №1, мог установить соединение с Node.js на одном из сайтов сервера №2,
при условии, что серверы соединены через роутер Mikrotik по локальной сети.
То есть нужно создать соединение, без участия внешнего ip.