前言

不知道有没有小伙伴在开发过程中遇到过:第三方服务提供的接口只能通过其IP白名单池中的IP访问?

面对这个痛点,有几种可能的解决方案:

将本地开发环境的IP地址添加到第三方的IP白名单池优点:本地环境不需要额外的配置。

缺点:本地环境的IP地址变化频繁,需要频繁申请在白名单中添加IP,沟通协调成本高。

仅本地代码开发,将服务部署到在线环境进行第三方接口调试优点:不需要额外的应用程序或配置。

缺点:开发效率低。功能完成后,需要在线部署才能进行调试,不利于问题的排查和解决。

用远程代理实现本地IDE -远程代理-第三方接口优点:开发效率高,代码开发和第三方接口调试都在本地IDE。符合常规发展模式。

缺点:需要额外的配置。

可见方案一和方案二的缺点是显而易见,难以忍受的,在实际工作中也无法满足我们的需求。方案三,虽然需要一些额外的配置,也需要一定的成本,但却是一个合理且易于实现的方案。

因此,本文将使用方案3来解决我们在开发过程中遇到的这个白名单痛点。

基本思路

在本地IDE和第三方服务器之间设置代理服务器。

代理服务器需要有固定的公共IP地址,并申请将该IP地址添加到第三方的IP白名单池中。

配置本地IDE环境,使其请求通过此代理服务器转发到第三方服务器。如下图所示:

微信ip白名单(防火墙设置ip白名单)-冯金伟博客园

因此,从上述思路出发,我们需要完成以下几点:

有一个服务器用公共固定IP作为代理服务器(可以向各大公有云提供商申请一个,不要重复),申请第三方将固定IP加入其访问白名单池(不是技术问题,不要重复),在代理服务器上配置代理。这里使用的代理软件是Squid本地IDE环境,并配置必要的参数连接到代理服务器。这里使用的本地IDE是IntelliJ IDEA。

00-1010 3.1在代理服务器上安装和配置Squid

Squid Cache(简称Squid)是HTTP代理服务器软件。鱿鱼被广泛使用。它可以用作缓存服务器,可以过滤流量以帮助网络安全。它还可以用作代理服务器链中的一个链接,将数据转发给上级代理或直接连接到互联网。

3.1.1安装Squid(基于Centos系统)

安装:

$ yum安装squid -y

$ yum安装httpd-工具-y

开始:

$ systemctl start squid.service

关闭

$ systemctl stop squid.service

启动自启动

$ systemctl启用squid.service

3.1.2配置Squid

打开Squid的配置文件:

$ vi /etc/squid/squid.conf

修改Squid.conf文件。这里,以squid代理为例:

#仅允许代理访问juejin.cn。

acl金爵_ URL URL _ regex juejin.cn

允许访问金爵

http _拒绝所有访问

#拒绝对请求原始来源的请求(使第三方服务器认为请求来自公共IP)

follow _ x _ forwarded _ for deny all

# 3128是默认端口号,建议修改。

http_port 0.0.0.0:3128

可以保持其他默认配置。

需要注意的是,本地IDE配置代理不支持密码(不确定?如果支持,请不吝评论),所以squid.conf配置文件中没有密码相关的配置。

3.2在本地集成开发环境中配置代理

单击编辑配置,单击左列中的Spring Boot,找到启动类xxxApplication,然后在环境中编辑虚拟机选项。假设代理服务器的公共IP为:123 . 123 . 123 . 123 . 123 . 123,监视器的端口号为3128(在squid.conf中指定),则填写VM选项列:

-DproxyHost=123 . 123 . 123 . 123-DproxyPort=3128

微信ip白名单(防火墙设置ip白名单)-冯金伟博客园