У меня есть два сервера, каждый из которых установлен: Ubuntu 18.04.2 LTS и панель VestaCP
Сервер # 1
Есть сайт " example.com", с Socket.IO:
var socket = io("https://www.example.com:8600/", {secure: false});
Сервер имеет внешний ip: 111.111.111.111 и 2 ethe rnet:
- Inte rnet подключение (внешний ip)
- Маршрутизатор Mikrotik
Сервер # 2
Есть сайт " bbb. net" и Node.js + Socket.IO, который должен ответить на запрос от сервера # 1 .
Локальный ip для сайта " bbb. net" равен "192.168.88.253"
На сервере нет внешнего ip.
Оба сервера подключены к маршрутизатору "Mikrotik HAP lite" (4 порта)
Подключенные модули: a2enmod proxy proxy_http proxy_wstunnel
Конфигурация на сайте " example.com " /home/admin/conf/web/example.com.apache2.ssl.conf
:
<VirtualHost 111.111.111.111:8443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin info@example.com
# redirect - which should forward http://socket.io request to server #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
... further unchanged default settings VestaCP
Если создать соединение на одном из сайтов на сервере # 2 - Socket.IO и выполнить настройки .apache2.ssl.conf
, как показано выше, то все работает успешно, но нет соединения с сервера # 1 , ошибка: GET https://www.example.com: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 мог установить sh соединение с Node.js на одном из сайты сервера # 2 , при условии, что серверы подключены через роутер Mikrotik в локальной сети?
Как создать соединение, без участия внешнего ip?