反饋已提交

網絡繁忙

不额外给WebSocket对外开放端口

1. 概述

1.1 版本

报表服务器版本
10.0

1.2 应用场景

部分公司对于工程环境安全级别要求较高,对于开发端口限制较多。

若只开放一个端口,websocket往往无法正常连接。

1.3 功能简介

在不能申请开放websocket端口的情况下,可以将socket端口也转发到开放的端口下。

本文将简单介绍在 Linux+Nginx+Tomcat 环境下,如何仅开放一个端口8888,仍可正常使用websocket。

2. 示例

2.1 设置websocket转发端口

管理员登录数据决策系统,点击「管理系统>系统管理>常规」,设置websocket 请求端口。如下图所示:

此处设置的端口即为工程唯一对外端口,可自行设置,本文以8888为例。

注1:集群环境会默认勾选「已配置代理服务器」,非集群环境需要手动勾选已配置代理服务器(表示已经配置nginx)。

2:若数据决策系统中不显示下图所示的 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;
        }
        ...
}
...

2.3 重启服务

重启 Nginx 和 FineReport 工程后,设置生效。

用户只需要开放 8888 端口,即可正常使用报表工程,正常使用 websocket。

附件列表


主題: 目录错乱的简中文档合集
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉