Skip to content

Для WebSocket не открываются дополнительные порты для внешнего мира

1. Обзор

1.1 Версия

Версия сервера FineBI
6.0

1.2 Сценарии применения

Некоторые компании требуют более высокого уровня безопасности для инженерной среды и имеют больше ограничений на порты разработки.

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

1.3 Функциональный профиль

Если вы не можете использовать открытый порт WebSocket, вы можете перенаправить порт сокета под открытый порт.

В этой статье мы кратко расскажем, как открыть только один порт 8888 в среде Linux+Nginx+Tomcat и при этом нормально использовать WebSocket.

Примечание: FineBI имеет встроенное решение для контейнерных сокетов. Рекомендуется проверить доступность этого решения в приоритетном порядке: Container Websocket Solution

Без каких-либо действий со стороны пользователя, без ручной настройки, без открытия дополнительных портов система может автоматически использовать для подключения WebSocket, поставляемый вместе с веб-контейнером, и мультиплексирование портов http.

2. Примеры

2.1 Настройка порта пересылки веб-сокетов

Администратор входит в систему FineBI, нажимает "System Management > Управление системой > Общие", чтобы установить порт запроса websocket. Как показано на рисунке ниже:

Установленный здесь порт является единственным внешним портом проекта, вы можете установить его самостоятельно, в данной статье в качестве примера используется порт 8888.

Примечание 1: Кластерные среды по умолчанию отмечают "Configured Proxy Server", а некластерные среды должны вручную отметить "Configured Proxy Server" (что указывает на то, что nginx уже настроен).

Примечание 2: FineBI имеет встроенный контейнер websocket, чтобы помочь пользователям быстро настроить порты websocket.

Если настройки HTTPS не отображаются на странице Manage System > System Management > General, это означает, что данное решение действует и соединение websocket настроено правильно без каких-либо других ручных настроек.

2.2 Изменение файла nginx.conf

Блок сервера Nginx listener при добавлении запроса url содержит /socket.io/ ветвь суждения обработки, порт сокета будет перенаправлен на открытый 8888 порт, подробная ссылка на файл конфигурации:

...   
  
  
. server { listen 8888;# порт для прослушивания, он должен быть таким же, как WebSocketConfig.requestPort выше &  
 nbsp; имя_сервера _; подчеркивания_в_заголовках  
  
 on; location / { &  
 nbsp; proxy_http_version 1.1; proxy_.  
 pass http://FR.com; proxy_next_upstream http_500&  
 nbsp; http_502 http_503 http_504 error timeout invalid_header non_idempotent;  
 proxy_redirect off; &  
 nbsp; proxy_set_header Host $host;  
 proxy_set_header X-Real-IP $remote_addr; proxy_  
 set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
 proxy_ set_header Connection ""; #  
 proxy_set_header X-Forwarded-Proto "https"; &  
 nbsp;proxy_connect_timeout 20; proxy_read_timeout&nbsp  
  
 1000; proxy_send_timeout 300;  
  
 } # здесь совпадает с /socket.io/, перенаправленным на websocket &  
 nbsp; location ^~ /socket.io/ { &  
 nbsp; proxy_pass http://WBS.com; proxy_http_version 1.1; proxy_http_version 1.1; proxy_http_version 1.1; proxy_http_version 1.1  
 версия 1.1; proxy_set_header Upgrade $http_  
 upgrade; proxy_set_header Connection "  
  
 upgrade"; proxy_connect_timeout 20; &  
 nbsp; proxy_read_timeout 1000;  
  
 proxy_send_timeout 300; } &nbsp  
; ... }  
...

2.3 Перезапуск услуг

Настройки вступают в силу после перезапуска проектов Nginx и FineBI.

Пользователям достаточно открыть порт 8888, чтобы нормально использовать BI-проект и websocket.