前后端分离部署架构图_完全版

对比精简版,主要是多了协议代理客户端及服务端。

整个前后端的http请求过程如下

1、静态请求过程

1.1、在DMZ区部署Smartbi前端应用服务器。

1.2、通过DMZ区的F5/Nginx分发到Smartbi前端应用。

1.3、Smartbi前端应用服务器把静态请求结果返回给到浏览器端。

2、动态请求过程

2.1、在 DMZ 部署EncryptProxy 的 Client客户端,接收由DMZ区的F5/Nginx 分发过来的Smartbi动态请求

2.2、在 内部网络部署EncryptProxy 的 Server服务端,服务端只能接收EncryptProxy 的 Client 端转发的请求,其它请求都被将被忽略。

2.3、EncryptProxy 的 Client客户端将收到的 Smartbi 动态 HTTP 请求,打包编码后发送到EncryptProxy 的Server服务端。

2.4、EncryptProxy 的Server 服务端将请求解包后,发送到 Smartbi 后端动态应用服务器。

2.5、Smartbi 后端动态服务器将动态请求执行完成后,返回给到 EncryptProxy 的Server服务端。

2.6、EncryptProxy 的server服务端将请求结果打包编码给到EncryptProxy 的Client客户端。

2.7、EncryptProxy 的Client 客户端将收到的结果解包后,将动态请求结果返回到浏览器端。


具体部署操作

smartbi部署

参考简化版本部署即可。

EncryptProxy部署

EncryptProxy客户端和server端,使用相同的jar包。

EncryptProxy客户端部署

配置application.properties

如下图,可以配置端口,server端的连接地址。

server.port 可以配置client客户端端口,默认是18080

proxy.serverUrl配置EncryptProxy的server端的地址。

配置黑白名单(可选)

黑白名单规则,主要是为了解决项目在外网访问内网资源时的安全问题。

具体操作步骤:

下载示例配置文件 defenderConfig.json ,上传到客户端节点,跟application.properties 在同一层目录,文件名称不能修改。

注意:该示例文件主要移动端浏览报表相关的请求配置,用户可以根据实际需求修改调整。

1、黑白名单defenderConfig.json文件,由于json文件中配置了checkHeaderName参数,需要在nginx的动态请求中,配置proxy_set_header customizeName smartbi_header; 保证动态请求能被nginx正确转发。

2、checkHeaderName默认值是customizeName,项目上可以可以自行定义。

下图是defenderConfig.json文件的配置,checkHeaderName的值可以自行定义。


下图是nginx的配置示例。如果配置了黑白名单规则,需要在nginx的动态请求中增加 proxy_set_header customizeName smartbi_header; 参数

1、只有在defenderConfig.json 白名单列表中的请求,并且该请求不在黑名单列表中时,才能通过client客户端转发到内网的server服务端。

2、在defenderConfig.json 黑名单中的请求都无法被转发到内网的server服务端。

3、不在defenderConfig.json 白名单中的请求,都不会被转发到内网的server服务端。

4、附件的白名单请求(defenderConfig.json)只配置了电子表格的移动端的请求。其他请求研发正在梳理中。

5、由于版本更新,请求可能新增或删减,需要项目上根据情况自行配置黑白名单。

6、修改黑白名单规则后,需要重启客户端才能生效。


1、defenderConfig.json文件,配置了checkHeaderName 参数,checkHeaderName的值可以自行定义,但是需要在nginx的动态请求端,配置proxy_set_header customizeName smartbi_header;

启动客户端

nohup $JAVA_HOME/bin/java -jar  EncryptProxy-10.5.jar >>EncryptProxy-client.log 2>&1 &

客户端日志,保存在EncryptProxy-client.log 中


停止客户端

ps -ef|grep EncryptProxy

kill -9 EncryptProxy的进程id

EncryptProxy服务端部署

配置application.properties

如下图,可以配置端口,server端的连接地址。

server.port 配置服务端端口,默认是18080

proxy.smartbiUrl 配置EncryptProxy的server端的地址。

启动服务端

nohup $JAVA_HOME/bin/java -jar  EncryptProxy-10.5.jar >>EncryptProxy-server.log 2>&1 &

服务端日志,保存在EncryptProxy-server.log 中。

注意:直接访问协议代理服务端,将无法访问smartbi。如果需要验证后端服务是否部署正常,只能通过协议代理客户端访问smartbi

停止服务端

ps -ef|grep EncryptProxy

kill -9 EncryptProxy的进程id


其他说明:

EncryptProxy的client客户端和server服务端口都是无状态服务,如果需要配置集群高可用,直接配置多个节点,用nginx转发即可。


注意事项

1、外部请求是先经过nginx,然后才经过smartbi。如果nginx有限制文件大小,smartbi 系统选项里面的【允许上传的文件大小】参数,可能会不生效。