1. 概述
1.1 版本
BI 伺服器版本 |
---|
5.1 |
1.2 應用場景
部分公司對於工程環境保全等級要求較高,對於開發埠限制較多。
若只開放一個埠,WebSocket 往往無法正常連結。
1.3 功能簡介
在不能申請開放 WebSocket 埠的情況下,可以將socket埠也轉發到開放的埠下。
本文將簡單介紹在 Linux+Nginx+Tomcat 環境下,如何僅開放一個埠8888,仍可正常使用 WebSocket。
2. 範例
2.1 設定websocket轉發埠
1)5.1.2 及之後版本工程
管理者登入數據決策系統,點選「管理系統>系統管理>標準」,設定websocket 請求埠。如下圖所示:
此處設定的埠即為工程唯一對外埠,可自行設定,本文以8888為例。
注1:叢集環境會預設勾選「已配置代理伺服器」,非叢集環境需要手動勾選已配置代理伺服器(表示已經配置nginx)。
注2:11.0.2 及之後版本,新增一個容器 websocket 方案,幫助使用者實現快速配置 websocket 埠。
若「管理系統>系統管理>標準」頁面不顯示 HTTPS 設定項,說明此方案生效,Websocket 連結已正確配置,無需其他任何手動配置。
2)5.1.2 之前版本工程
超級管理者可透過「fine_conf_entity視覺化配置插件」更改 WebSocketConfig.requestPort 埠號。重啓伺服器後設定生效。
注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改 。
配置項 | 修改規則 |
---|---|
WebSocketConfig.requestPort | 埠號可設定範圍:1024~65535 本文以 8888 為例 |
2.2 修改nginx.conf
Nginx 監聽 server 塊下加上對請求 url 包含 /socket.io/ 的分支判斷處理,將socket埠轉發到開放的8888埠下,詳細的配置檔案參考:
...server { listen 8888;#監聽埠,這個要和上面的WebSocketConfig.requestPort一致 server_name _; underscores_in_headers on; location / { proxy_http_version 1.1; proxy_pass http://FR.com; proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header non_idempotent; proxy_redirect off; 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"; proxy_connect_timeout 20; proxy_read_timeout 1000; proxy_send_timeout 300; } #這裏匹配/socket.io/轉發給websocket的upstream location ^~ /socket.io/ { proxy_pass http://WBS.com; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 20; proxy_read_timeout 1000; proxy_send_timeout 300; } ...}...
2.3 重啓服務
重啓 Nginx 和 FineBI 工程後,設定生效。
使用者只需要開放 8888 埠,即可正常使用 BI 工程,正常使用 websocket。