在这篇博客中,87cloud将详细讨论使用阿里云全球加速和 Squid 缓存代理构建跨境加速解决方案所需的步骤。
解决方案概述该解决方案利用阿里云全球加速(GA) 服务来加速访问中国境外托管的服务,例如 salesforce.com。
此解决方案中有 3 个主要组件:
- 一个在 海外区域运行 Squid 缓存代理的 ECS 实例。
- 一个具有跨境带宽包的GA实例,在中国大陆分配加速IP地址。
- 一个对象存储服务 (OSS) 存储桶托管用于客户端代理自动配置的 PAC 文件。
在此解决方案中,我们设置了中国大陆客户端浏览器,这些浏览器通过OSS存储桶中托管的PAC文件配置GA加速IP地址作为代理。GA 实例将指定域名的客户端请求“转发”到美国 squid 代理,保证带宽和低时延。
本博客的以下部分将分享有关如何实现此解决方案和配置这 3 个主要组件的分步指南。
步骤 1:在美国设置 Squid 缓存代理 1.1 创建专有网络和交换机前往专有网络控制台。在美国(硅谷)地域或靠近待加速服务的区域创建专有网络和交换机。您可以选择默认网段。
1.2 创建 ECS 实例进入弹性云服务器管理控制台。建议在 VPC、CentOS 或 Ubuntu OS 中创建 ECS 实例。根据需要分配公共 IP 地址并设置峰值带宽。
实例启动运行后,还建议将公有 IP 地址转换为 EIP,以获得更大的灵活性。
1.3 配置安全组单击实例名称,然后单击导航栏中的安全组以打开安全组页面。单击关联的安全组,然后单击添加安全组规则,并允许 TCP 端口 3128(Squid 的默认端口)从 0.0.0.0/0。
登录 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
在编辑器中打开。/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 localhost
http_access allow localnet
http_access allow localhost
http_access allow localnet
auth_users
allowed_domains acl
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
重新启动鱿鱼并检查状态
systemctl restart squid
systemctl status squid
1.7 验证 Squid 配置
在 Linux 或 macOS 系统中,运行以下命令:
curl -x 47.254.84.24:3128 -U sfuser: 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 实例类型的列表:
单击“购买基本带宽计划”选项卡,指定峰值带宽(例如10Mbps),然后完成订单。
此解决方案需要跨区域加速带宽包。带宽应与基本带宽计划匹配。
单击“购买跨境加速带宽包”选项卡,完成订单。
在带宽页面,单击跨境带宽包的“绑定实例”链接。选择要绑定到的 GA 实例。
在实例页面,单击“加速区域”选项卡,然后单击“添加加速区域”。选择“华东”区域、上海区域。将所有10Mbps分配给它。单击“确定”继续。
完成此步骤需要一些时间。完成后,将分配上海区域的加速 IP 地址。记下它,以便以后进行验证和 PAC 文件。
在实例页面,单击“监听”页签,单击“添加监听”以配置监听器和协议。选择 TCP 协议和端口 3128。
接下来,使用一个终端节点配置终端节点组:
- 地区: 美国(硅谷)
- 后端服务:阿里云
- 后端服务类型:阿里云公有IP地址
- 后端服务:ECS/squid 实例的公网IP地址,例如
47.254.84.24
确认并等待配置完成。
2.7 验证 GA 配置与 1.7 类似,使用 curl 但对于“-x”选项,请将 ECS/squid 的公网 IP 地址替换为 2.5 中配置的 GA 加速 IP 地址:
curl -x 47.101.144.164:3128 -U sfuser: ip.me
替换为 1.5 中设置的实际密码。
配置正确后,返回的IP地址将是ECS/squid的公网IP地址,即47.254.84.24
客户端浏览器需要一个 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";
}
请注意以下事项:
- 替换函数调用中的域名,以匹配 1.6 中的 squid dstdomain 配置。根据需要添加或删除呼叫。
dnsDomainIs
dnsDomainIs
- 将 PROXY IP 地址替换为 2.5 中配置的 GA 加速 IP 地址。
- 或者,GA 提供了一个 CNAME,可以用作 PROXY 地址,例如 ,但需要一次额外的 DNS 查找。
PROXY ga-bp10hvy2c21indkgtmyg8.aliyunga0017.com:3128
PAC 文件需要托管在可公开读取的位置,最好是中国大陆。我们建议在中国区域使用阿里云 OSS 存储桶。
- 进入 OSS 控制台
- 在中国(上海)区域创建存储桶。
- 将 3.1 中创建的 PAC 文件上传到存储桶,将文件 ACL 更改为“公用读取”。
- 单击新上传的文件以获取 URL
- 验证 URL 是否可通过浏览器访问。
使用 OSS 网址配置客户端代理设置:
- 视窗: https://findproxyforurl.ackor.net/deploying-pac.html
- macOS: Change proxy settings in Network preferences on Mac - Apple Support
- iOS: https://findproxyforurl.ackor.net/apple-ios.html
- 安卓: https://support.google.com/android/answer/9654714?hl=en
配置完成后,在浏览器中访问 https://ip.me。出现提示时,提供在 1.5 中配置的用户名和密码。返回的页面应显示 ECS/squid 实例的公网 IP 地址,与 1.7 和 2.6 中的 IP 地址相同。
祝贺!实施现已成功完成。