部分公司對於工程環境保全等級要求較高,對於開發埠限制較多。
若只開放一個埠,WebSocket 往往無法正常連結。
在不能申請開放 WebSocket 埠的情況下,可以將socket埠也轉發到開放的埠下。
本文將簡單介紹在 Linux+Nginx+Tomcat 環境下,如何僅開放一個埠8888,仍可正常使用 WebSocket。
注:FineBI 內建了一個容器Websocket方案。推薦優先查看是否可使用該方案:容器Websocket方案
無需任何使用者操作,無需任何手動配置,無需額外開啟埠,系統可自動使用Web容器自帶的WebSocket進行連結,埠複用http埠。
管理者登入數據決策系統,點選「管理系統>系統管理>標準」,設定websocket 請求埠。如下圖所示:
此處設定的埠即為工程唯一對外埠,可自行設定,本文以8888為例。
注1:叢集環境會預設勾選「已配置代理伺服器」,非叢集環境需要手動勾選已配置代理伺服器(表示已經配置nginx)。
注2:FineBI內建了一個容器 websocket 方案,幫助使用者實現快速配置 websocket 埠。
若「管理系統>系統管理>標準」頁面不顯示 HTTPS 設定項,說明此方案生效,Websocket 連結已正確配置,無需其他任何手動配置。
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; } ...}...
重啟 Nginx 和 FineBI 工程後,設定生效。
使用者只需要開放 8888 埠,即可正常使用 BI 工程,正常使用 websocket。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙