1. 背景
前端测试的需求,觉得目前使用charles代理进行抓包不能满足使用
问题:
① https协议需要安装证书比较麻烦
② 请求和返回数据中有加密数据,需要手动复制出来处理
③ 配置mock 不够灵活
解决方案:
使用Openresty 做反向代理,在原服务外面套一个网关,进行日志记录,和进行数据mock逻辑的处理。这样对于手机端无感知的。
将原服务端的ip改为我的Openresty网关,两种方式,
一是修改手机的hosts文件,二是自建dns服务器,为了方便端上使用,采用自建dns服务器的方式。
2. 使用
简单对比开源的dns工具,Bind9,Dnsmasq,PowerDNS, CoreDNS等,选择了比较新的CoreDNS。它的特点是比较灵活,且方便部署和使用。官网地址。
2.1 安装和配置
① 编译
克隆代码
$ git clone https://github.com/coredns/coredns
$ cd coredns
编译二进制程序
$ make
# 如果本地没有go环境,可以使用docker 的go镜像进行编译
$ docker run --rm -i -t -v $PWD:/v -w /v golang:1.16 make
② 使用
运行编译好的程序即可开启服务
$ ./coredns
③ 修改配置文件
在同目录创建Corefile文件,内容如下
.:53 {
hosts hosts
log
forward . 8.8.8.8:53
}
创建 hosts文件
192.168.1.171 www.baidu.com
192.168.1.171 m.baidu.com
192.168.1.171 m.hupu.com
192.168.1.171 www.mock.com
④ 测试
$ nslookup www.baidu.com 10.20.11.11 # ip为部署 coredns 服务的设备ip
DNS request timed out.
timeout was 2 seconds.
服务器: UnKnown
Address: 10.20.11.11
名称: www.baidu.com
Address: 192.168.1.171
2.2 手机端使用
只需将手机中DNS配置修改为 刚刚搭建的coredns服务地址即可将流量打到我们的openresty网关了。