关于内外网隔离的网络访问解决方案

该问题的解决方案比较简单,但是偶有同事还是在问这个问题,因此将该问题的解决方案记录下来,写给那些需要这个方案的小朋友。如有不正之处,欢迎批评指正。

问题描述

在公司的生产环境中存在DMZ 和 APP 两个网络区域,从外网中可以直接访问 DMZ 区,不可以直接访问 APP 区,如下图所示:
关于内外网隔离的网络访问解决方案

目前在开发的微信小程序部署在微信的服务器上(也就是在外网中),它需要访问 APP 区部署的服务接口。也就是需要在外网中访问 APP 区的服务接口,如下图所示:
关于内外网隔离的网络访问解决方案

解决方案

在 DMZ 区增加中转服务器,微信小程序直接请求中转服务器,中转服务器接收到请求后,将请求内容转发至 APP 区的相应服务中。
APP 区中的服务接收到请求后,进行相应的业务处理,将响应结果返回给中转服务器,之后中转服务器将结果返回给微信小程序,如下图所示:
关于内外网隔离的网络访问解决方案

中转服务器需要配置相应的转发规则,将外网的域名映射至中转服务器,内网的域名映射至 APP 区服务器,转发规则就是将外网域名映射至相应的内网域名。
假定存在如下的映射关系:

外网域名 内网域名
user.waiwang.com user.neiwang.com
news.waiwang.com news.neiwang.com
prod.waiwang.com prod.neiwang.com

我们在外网中访问user.waiwang.com,请求会被直接转发到 user.neiwang.com进行响应。

该方案对业务系统没有侵入,具备良好的扩展性。

结合以上的解决方案,我们只需要在 DMZ 区中增加 Nginx 中转服务器,在 Nginx 中配置现有系统的内外网域名映射规则,即可实现外网访问 APP 区中的应用。