最近对接一个测试项目的时候,需要调用客户对方的服务器进行测试和开发。客户服务器上面调用API接口的时候添加了白名单机制,只有添加到白名单的IP请求才能够响应。在服务器的互相调用中这个是没有问题的,服务器的IP不会变动的。但是在开发测试中却遇到了麻烦。
直接用本地的电脑进行请求开发测试的话,需要将本地的IP地址添加上面。上午添加后请求正常,等到下午的时候,本地宽带的IP地址就发生了变化。然后重新让对方添加了白名单,结果同样,到不了第二天又发生了变化。
我知道本地宽带的IP地址会发生变化的,但是这个变化速度是我没有想到的。
这个时候我想到手头有一个阿里云的服务器,虽然配置不高但是有固定的公网IP,是否可以利用这个公网IP进行请求呢?进行了一番搜索查找之后,还真的可以的。用squid
进行代理转发就可以实现这个需求。
说干就干,我的这台阿里云服务器上面安装是宝塔面板,宝塔面板除了站点可视化以外,现在还有Docker
的可视化管理和操作。这里,为了不对服务器本身系统配置产生什么影响,我同样适用Docker
来进行Squid
的部署。
从Docker Hub上面搜索Squid,发现 ubuntu/squid
这个镜像完全符合我的要求。由于最近国内的Docker镜像源大部分都不能用,所以,我通过本地docker进行拉取,并导出镜像,然后将镜像上传并导入到宝塔面板的本地镜像中。
然后使用宝塔的Docker管理–>容器–>创建容器。选择导入的镜像,这里是ubuntu/squid:latest
,然后最重要的一步设置便是端口的设置
。
Squid
使用的是 3128
端口,便需要将3128
端口映射出来。宝塔中这一步的操作也比较方便,暴露端口中选择添加,容器端口填写 3128
,本地端口随意。 为了安全起见,我这里本地端口用了另一个,比如4444
。
本地端口便是后面代理设置时候需要填入的端口地址,阿里云服务器的本身对这些端口是没有放行的。需要登录阿里云后台,在对应的网络组中,选择并放行你填写的端口,比如我这里填写的
4444
。
后面的配置直接使用默认配置即可,点击创建。运行成功之后,如果使用postman
进行测试,则直接在postman
上面进行设置。在postman
的Setting
中选择Proxy
,选择 use custom proxy configuration
,然后填入你的服务器ip和你上面设置的端口即可。
填写完成之后,再用postman
进行接口请求,便是使用的这个服务器的固定IP。