在这篇博客中,87cloud将详细讨论使用阿里云全球加速和 Squid 缓存代理构建跨境加速解决方案所需的步骤。
解决方案概述
该解决方案利用阿里云全球加速 (GA) 服务来加速访问中国境外托管的服务,例如 salesforce.com。
此解决方案中有 3 个主要组件:
在此解决方案中,我们设置了中国大陆客户端浏览器,这些浏览器通过OSS存储桶中托管的PAC文件配置GA加速IP地址作为代理。GA 实例将指定域名的客户端请求“转发”到美国 squid 代理,保证带宽和低时延。
本博客的以下部分将分享有关如何实现此解决方案和配置这 3 个主要组件的分步指南。
步骤 1:在美国设置 Squid 缓存代理
1.1 创建专有网络和交换机
前往专有网络控制台。在美国(硅谷)地域或靠近待加速服务的区域创建专有网络和交换机。您可以选择默认网段。
1.2 创建 ECS 实例
进入弹性云服务器管理控制台。建议在 VPC、CentOS 或 Ubuntu OS 中创建 ECS 实例。根据需要分配公共 IP 地址并设置峰值带宽。
实例启动运行后,还建议将公有 IP 地址转换为 EIP,以获得更大的灵活性。有关详细信息,请参阅 https://www.alibabacloud.com/help/doc-detail/61290.htm。
1.3 配置安全组
单击实例名称,然后单击导航栏中的安全组以打开安全组页面。单击关联的安全组,然后单击添加安全组规则,并允许 TCP 端口 3128(Squid 的默认端口)从 0.0.0.0/0。
1.4 安装鱿鱼
登录 ECS 实例
ssh root@47.254.84.24
安装鱿鱼:
对于 CentOS,请运行以下代码:
yum install -y squid
对于 Ubuntu,请运行以下代码:
apt install -y squid
1.5 配置 Squid 基本身份验证
您的代码将取决于操作系统的选择,因此请格外注意。
CentOS:
yum install -y httpd-tools
touch /etc/squid/passwd
chown squid /etc/squid/passwd
htpasswd /etc/squid/passwd sfuser
Ubuntu:
apt install -y apache2-utils
touch /etc/squid/passwd
chown proxy /etc/squid/passwd
htpasswd /etc/squid/passwd sfuser
使用以下命令验证基本身份验证:
CentOS:
/usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
Ubuntu:
/usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
该命令等待用户名和密码对以空格分隔。如果返回“OK”,则身份验证工作正常。如果返回“ERR”,请使用重置密码,然后重试。htpasswd
1.6 配置鱿鱼 ACL
在编辑器中打开。/etc/squid/squid.conf
添加以启用基本身份验证auth_param
Ubuntu:在部分末尾的行之后添加以下行:auth_param#Default: none
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
CentOS:在文件开头添加以下行:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
在本节中添加以下行,在以下行之后:http_access# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl auth_users proxy_auth REQUIRED
acl allowed_domains dstdomain .salesforce.com .force.com .sfdcstatic.com ip.me
http_access allow auth_users allowed_domains
注意:将之后的域列表替换为任何域名以允许访问。使用空格分隔条目。要匹配子域,请添加前导点。acl allowed_domains dstdomain
还要确保紧跟在这些行之后。http_access deny all
但是,可能存在并且介于两者之间。 很好。但请注释掉,因为这将覆盖 和 所有本地网络 IP 范围,包括 、、等。http_access allow localhosthttp_access allow localnethttp_access allow localhosthttp_access allow localnetauth_usersallowed_domains acl10.0.0.0/8172.16.0.0/12192.168.0.0/16
重新启动鱿鱼并检查状态
systemctl restart squid
systemctl status squid
1.7 验证 Squid 配置
在 Linux 或 macOS 系统中,运行以下命令:
curl -x 47.254.84.24:3128 -U sfuser:<password> ip.me
“-x”选项指定代理服务器和端口。
“-U”选项指定用于基本身份验证的用户名:密码。替换为 1.5 中设置的实际密码。
“ip.me”是一个 IP 地址反射器网站,它返回请求的有效公共 IP 地址。在这种情况下,它返回 ECS/squid 实例的公网 IP 地址,即 .47.254.84.24
要解决 squid 问题,请运行“systemctl status squid”并选中 /var/log/squid/access.log和 /var/log/squid/cache.log。
步骤 2:创建和配置全局加速器实例
2.1 启动 GA 实例
转到 GA 控制台。单击“创建实例”。根据屏幕截图后面的表选择规格。
以下是可供选择的 GA 实例类型的列表:
2.2 购买基本带宽包
单击“购买基本带宽计划”选项卡,指定峰值带宽(例如10Mbps),然后完成订单。
2.3 购买跨地域加速带宽包
此解决方案需要跨区域加速带宽包。带宽应与基本带宽计划匹配。
单击“购买跨境加速带宽包”选项卡,完成订单。
2.4 将跨地域加速带宽包绑定到GA实例:
在带宽页面,单击跨境带宽包的“绑定实例”链接。选择要绑定到的 GA 实例。
2.5 添加加速区域
在实例页面,单击“加速区域”选项卡,然后单击“添加加速区域”。选择“华东”区域、上海区域。将所有10Mbps分配给它。单击“确定”继续。
完成此步骤需要一些时间。完成后,将分配上海区域的加速 IP 地址。记下它,以便以后进行验证和 PAC 文件。
2.6 将侦听器添加到 GA 实例
在实例页面,单击“监听”页签,单击“添加监听”以配置监听器和协议。选择 TCP 协议和端口 3128。
接下来,使用一个终端节点配置终端节点组:
确认并等待配置完成。
2.7 验证 GA 配置
与 1.7 类似,使用 curl 但对于“-x”选项,请将 ECS/squid 的公网 IP 地址替换为 2.5 中配置的 GA 加速 IP 地址:
curl -x 47.101.144.164:3128 -U sfuser:<password> ip.me
替换为 1.5 中设置的实际密码。<password>
配置正确后,返回的IP地址将是ECS/squid的公网IP地址,即47.254.84.24
步骤 3:客户端配置
客户端浏览器需要一个 PAC 文件来帮助确定何时使用代理以及何时不使用代理。这对于确保客户端浏览器不会向 GA 实例发送在中国公开阻止的域名请求也很重要。
3.1 创建 PAC 文件
将以下内容保存到一个文件中,例如“sfproxy.pac”。
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, 'ip.me') ||
dnsDomainIs(host, 'salesforce.com') ||
dnsDomainIs(host, '.salesforce.com') ||
dnsDomainIs(host, '.force.com') ||
dnsDomainIs(host, '.sfdcstatic.com'))
return 'PROXY 47.101.144.164:3128';
else
return 'DIRECT';
}
请注意以下事项:
3.2 在OSS中托管PAC文件
PAC 文件需要托管在可公开读取的位置,最好是中国大陆。我们建议在中国区域使用阿里云 OSS 存储桶。
有关使用OSS的更多信息,请参阅OSS快速入门指南
3.3 配置客户端浏览器以使用 PAC 文件
使用 OSS 网址配置客户端代理设置:
配置完成后,在浏览器中访问 https://ip.me。出现提示时,提供在 1.5 中配置的用户名和密码。返回的页面应显示 ECS/squid 实例的公网 IP 地址,与 1.7 和 2.6 中的 IP 地址相同。
祝贺!实施现已成功完成。