在企业网络架构中,为了保障内网安全,通常会设置 DMZ 缓冲区。DMZ 作为内网与外网的中间区域,可以有效隔离内外网,防止外部网络直接访问内网资源。本文将介绍如何通过 DMZ 缓冲区的一台服务器中转 DataEase 请求对接企业微信。
一、网络流向图
以下是通过 DMZ 缓冲区中转 DataEase 请求至企业微信的网络流向图:
缓冲区的服务器需要承担两个作用:
1、转发来自 DataEase 的企业微信请求至公网的企业微信。
2、转发来自公网的、访问 DataEase 的请求至内网的企业微信。
第二点相对而言还是比较简单的,就是一个 Nginx 反向代理 DataEase 的配置,知识库上有很多文章可以参加,不做赘述。
第一点则稍微复杂一些,我们需要先在内网 DataEase 服务器上配置域名映射,确保企业微信相关的请求可以到达 DMZ 缓冲区,再在 DMZ 缓冲区将请求转发至公网企业微信,下面我们重点来看下这块的配置。
二、DataEase 相关配置
1、DataEase 访问根路径配置
配置 DataEase 访问根路径,方便 DMZ 缓冲区的 Nginx 进行代理,详细可参考:DataEase v2 设置动态访问路径,使用 Nginx 路径代理
2、域名映射配置
DataEase 域名映射我们通过修改 docker-compose.yml 文件,添加 extra_hosts 来解决,如下所示,ip 地址填写 DMZ 区的 ip 地址即可:
三、DMZ 缓冲区 Nginx 相关配置
Nginx 的部署同样不做赘述了,可参考:【安装部署】配置 DataEase 使用 https 访问,这边需要注意的是,企业微信默认是请求的 443 端口,且为 https 协议,因此我们的 Nginx 同样需要监听 https 443 端口,配置文件如下所示,供大家参考:
server {
listen 443 ssl;
server_name www.xxxxx.cn;
ssl_certificate /opt/cert/xx.crt;
ssl_certificate_key /opt/cert/xx.key;
ssl_session_timeout 1d;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
# 代理后端服务
location ^~ /dataease/ {
proxy_pass http://172.xx.xx.xx:9080/dataease/;
server_name_in_redirect off;
}
# 静态资源代理
location ~* ^/(js|css|assets|mobile.html|de2api|tinymce-dataease-private)/ {
proxy_pass http://172.xx.xx.xx:9080/dataease/$1;
}
# 企业微信代理
location / {
proxy_pass https://qyapi.weixin.qq.com;
proxy_set_header Host qyapi.weixin.qq.com;
}
}
四、企业微信相关配置
接下来正常将 DMZ 的缓冲区服务器的 443 端口绑定上域名,就可以配置企业微信对接了,企业微信对接配置可参考:https://dataease.io/docs/v2/xpack/platform_abutment/#1