1. 概述
1.1 功能简介
报表服务器部署在内网,不能访问外网,也不能被外网访问。这种情况下可以通过配置代理服务器来转发内网报表服务器和外部的通信。
该方案可以解决将 PC 设备与移动设备切换至同一网络环境下,才能查看模板的问题。
1.2 场景假设
假设有两台机器,一台机器 192.168.5.61 作为代理服务器,一台机器 192.168.5.24 作为内网服务器。
下面以 Windows 系统为例进行配置。
2. 正向代理配置
2.1 说明
报表服务器向代理服务器发送请求类似http://代理ip:端口/gettoken,代理将请求转给 oapi.dingtalk.com,从而实现对外部微信/钉钉服务器的访问。
2.2 步骤
1)代理服务器下载地址:nginx,这里以 nginx/Windows-1.14.0 为例,点击下载。
2)下载完成后解压即可使用,点击 nginx.exe,在浏览器内输入http://localhost/ 出现 Nginx 欢迎页面即部署成功。
3)修改配置文件conf/nginx.conf,在http{}之间添加如下代码:
server {
listen 8114; # listen 端口,代理服务器的端口,可以自定义
server_name 192.168.5.61; # sever_name, 写的代理服务器的 IP 地址
location / {
proxy_redirect off;
proxy_pass https://oapi.dingtalk.com; #转发地址,以钉钉为例 https://oapi.dingtalk.com,微信类似 https://qyapi.weixin.qq.com
}
location = /favicon.ico {
log_not_found off;
}
}
4)重启 Nginx,在浏览器内输入http://代理ip:端口/gettoken,比如:http://192.168.5.61:8114/gettoken,有如下钉钉返回信息即表示代理服务器配置成功。
5)安装钉钉插件后,在钉钉基本信息页面里,填入代理地址后保存,然后在成员管理里面同步通讯录,可以同步即表示正向代理配置成功。
3. 反向代理配置
3.1 说明
访问代理服务器env.finedevelop.com:56108/WebReport/ReportServer?op=fs,代理将请求都转给内网报表服务器 192.168.5.24:8080,从而实现对内网报表服务器的访问。
注:这个属于常规环境配置,客户需要根据自己的网络环境自行配置,这里配置步骤仅供参考。
代理服务器配了一个端口映射,可以被外网访问 192.168.5.61:8443—>env.finedevelop.com:56108
内网报表服务器的访问地址是 192.168.5.24:8080/WebReport/ReportServer?op=fs
3.2 步骤
1)代理服务器的部署同上,下载并安装 Nginx。
2)修改 Nginx 配置文件conf/nginx.conf,在http{}之间添加如下代码:
server {
listen 8443; # listen 端口,代理服务器的端口,可以自定义
server_name env.finedevelop.com; # server_name,写的代理服务器的地址
location / {
proxy_pass http://192.168.5.24:8080; # 转发地址 内网服务器的 IP 和端口
proxy_set_header Host env.finedevelop.com:56108; # 转发的请求里的 host 信息,,写的打开在浏览器里 URL 的地址
}
}
3)重启 Nginx,浏览器内输入env.finedevelop.com:56108/WebReport/ReportServer可以正常登录并访问服务器,则表示配置成功。
即可通过env.finedevelop.com:56108/WebReport/ReportServer?op=fs访问内网服务器,同时在 微信/钉钉 管理中也可以同步获取通讯录了。
3.3 其他配置
用反向代理将内网报表服务器开放到公网,公网访问时应该只是普通用户,考虑安全原因不对公网连接进来的用户开放后台管理。设置方法如下:
在 Nginx 配置文件监听端口下添加如下信息,webroot 为应用部署的工程名称。
server {
listen 8088 default_server;
location /webroot/decision/v10/decision/modules {
default_type application/json;
return 200 '{"data":[]}';
}
}
4. 10.0单机下 Apache 代理方案
4.1 说明
Apache 配置了反向代理后,WebSocket 怎么处理能才能保证功能可用呢?下面将给出详细的方案。
4.2 步骤
1)下载和安装
首先下载和安装好 Apache 服务器,下载和安装方法此处不予说明,用户自行查阅相关资料即可。
2)Apache 模块启动
在%Apache_Home%\conf路径下, 修改 httpd.conf 文件,将以下模块的代码注释掉。
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule headers_module modules/mod_headers.so
3)配置 WebSocket 监听端口
在%Apache_Home%\conf路径下,修改 httpd.conf 文件,添加 WebSocket 监听端口38888,如下图所示:
4)配置工程 http 代理
在%Apache_Home%\conf路径下,修改 httpd.conf 文件,在文件最后添加如下代码:
<VirtualHost *:80>
ProxyPass / http://192.168.5.246:8080/
ProxyPassReverse / http://192.168.5.246:8080/
ProxyPreserveHost On
</VirtualHost>
注:代码中 80 是 Apache 所监听的端口,ProxyPass 和 ProxyPassReverse 中的 192.168.5.246:8080 是我们的请求的工程服务器 IP 和端口。
5)配置 WebSocket 代理
在%Apache_Home%\conf路径下,修改 httpd.conf 文件,在文件最后添加如下代码:
<VirtualHost *:38888>
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://192.168.5.246:38888%{REQUEST_URI} [P]
ProxyRequests Off
ProxyMaxForwards 100
ProxyPreserveHost On
ProxyPass / http://192.168.5.246:38888/
</VirtualHost>
注:代码中 38888 是 Apache 所监听的端口,RewriteRule 和 ProxyPass 中的 192.168.5.246:38888 是需要我们的请求的工程服务器 IP 和 WebSocket 端口。
6)访问平台
完成上述5个步骤后,在%Apache_Home%\bin路径下,双击 httpd.exe 即可启动 Apache,在浏览器中访问localhost/webroot/decision,即可正常访问平台,如下图所示:
测试 WebSocket 是否连接成功,如下图所示:
注:本文中 WebSocket 端口和 FineReport 服务器端口均为38888,这是由于 Apache 和 FineReport 工程在不同的服务器上,因而没有冲突;但如果在一台服务器上,则需要将 WebSocket 监听端口改为38889。
5. 设置代理服务器地址
可通过「fine_conf_entity可视化配置插件」设置代理服务器地址。重启服务器后设置生效。
注:修改 FineDB 数据库表字段值的方法请参考 FineDB 常用表字段修改 。
配置项 | 修改规则 |
---|---|
MobileConfig.appMsgProxy | 参数值为非空字符串 默认值为_EMPTY_ 代理服务器地址格式为: http://ip:port/mobile/push/message/send |