1. 背景

我们开发和测试环境做了网络隔离,现在有个测试环境业务要访问开发环境的另一个业务。由于走申请打通流程比较麻烦,在了解到开发环境ng和测试环境的ng之间是打通了网络的。所以决定从做两层ng转发到开发环境真正的业务。即:
A业务(10.201.5.171:test环境)–>ng(10.201.5.20: test环境) -->ng(172.22.23.146:dev环境) -->B业务(172.22.145.228dev环境)

2. 其他说明

因为开发环境的B业务,做的有dns解析。所以为了保证统一,打算在测试环境访问和开发环境相同的域名,都能访问得到相同的结果,因为我们开发和测试环境都有内部dns,而且是隔离的,所以只要在测试环境的dns配上解析,指向到5.20的ng。就能保证不同环境相同的域名访问的相同的业务

3. 配置dns解析

先到测试环境dns服务器配置A解析

如下:

nginx装好直接复制到其他服务器可以用吗 nginx转发到另一台nginx_测试环境


此时访问yapi.sui.work 就能转到10.201.5.20上了

4. 配置第一层ng的转发

添加一个ng的配置文件

nginx装好直接复制到其他服务器可以用吗 nginx转发到另一台nginx_开发环境_02


然后把所有的请求都转发到172.22.23.146上,注意一定要把$request_uri加上,前面不要加/ 如下图:

nginx装好直接复制到其他服务器可以用吗 nginx转发到另一台nginx_开发环境_03


配置完成以后,nginx -t && nginx -s reload

5. 配置第二层ng

第二层ng的时候,可以有两种方式,一是新建一个ng配置文件,和第一层ng一样匹配所有请求到的。转发到

172.22.146.228,这种方式是最好的。 第二种方式,和现有的ng配置文件结合,但是为了防止默认页面的污染,所以加了/mock来进行区分。换句话说,如果开发的url中没有mock的话,就匹配不到。刚好,我要配的这个业务都是以mock来开头的,所以我就选了第二种。配置完成以后,nginx -t && nginx -s reload

nginx装好直接复制到其他服务器可以用吗 nginx转发到另一台nginx_开发环境_04

6. 效果

在10.201.5.171上 (这个走的是上面我配置的线)

nginx装好直接复制到其他服务器可以用吗 nginx转发到另一台nginx_测试环境_05


在172.22.145.150 (这个走的是开发环境dns直接到172.22.146.228的)

nginx装好直接复制到其他服务器可以用吗 nginx转发到另一台nginx_开发环境_06