反馈已提交
网络繁忙
部分公司对于工程环境安全级别要求较高,对于开发端口限制较多。
若只开放一个端口,WebSocket 往往无法正常连接。
在不能申请开放 WebSocket 端口的情况下,可以将socket端口也转发到开放的端口下。
本文将简单介绍在 Linux+Nginx+Tomcat 环境下,如何仅开放一个端口8888,仍可正常使用 WebSocket。
注:5.1.20 及之后版本的BI工程,新增了一个容器Websocket方案。推荐优先查看是否可使用该方案:容器Websocket方案
无需任何用户操作,无需任何手动配置,无需额外开启端口,系统可自动使用Web容器自带的WebSocket进行连接,端口复用http端口。
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 常用表字段修改 。
端口号可设置范围:1024~65535
本文以 8888 为例
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。
feedback
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭