阿里云 CDN 实现加速 IPv6 服务到公网(IPv4、IPv6)
简而言之,服务器过期了,太贵了买不起,找替代方案。
一、准备工作
-
关于阿里云 CDN :加速——受限制的代理。
-
当客户端和 CDN 交互的时候, CDN 作为一个服务端, 只提供
80
和443
端口的服务。也就是说,客户端只能访问 CDN 的80
或者443
端口。例如 CDN 加速域名是example.aliyundoc.com
,则请求以下这种形式的网络地址会失败,因为CDN并没有提供9060
端口的服务。http://example.aliyundoc.com:9060
-
当 CDN 请求源站的时候, CDN 作为一个客户端去请求源站。具体请求源站的哪个端口,需在控制台查看源站配置的端口号。如果需要加速自定义端口,请参考本文进行
-
如果
example.aliyundoc.com
这个CDN加速域名需要加速源站的9060
端口,则配置自定义端口为9060
以后,用http://example.aliyundoc.com
访问即可。实际请求的时候,客户端会请求到 CDN 的80
端口, CDN 会请求源站的9060
端口。
说明:访问URL后面不需要加端口号,不需要用
http://example.aliyundoc.com:9060
的形式访问。 -
-
支持仅 IPv6 源站转 IPv4/IPv6 代理。
这项功能倒是非常方便。
-
加速的后端服务,至少要在 IPv4 或者 IPv6 的一类公网可以正常访问,才可以进行国内全域的代理。
-
购买阿里云
CDN/全站加速资源包
。项 值 备注 商品类型 CDN/全站加速资源包 资源包类型 下行流量 下行流量 50G 加速区域 全国通用(中国内地) 套餐 中国内地通用流量包 购买有效期 1年 费用 8.40 元 说实话,虽然后面复杂很多,但是比云服务器便宜,先试试水,自己小网站无所谓了。
二、阿里云 CDN 基础配置
在阿里云 CDN 服务中,内容分发服务 -> 域名管理
中添加域名。
-
添加域名
。项 值 备注 加速区域 仅中国内地 加速域名 test_1.example.com 示例,建议二级域名 业务类型 图片小文件 资源分组 默认资源组 -
源站信息 -> 新增源站信息
。项 值 备注 源站信息 源站域名 域名 test_2.example.com 示例 优先级 主 权重 10 端口 8888 示例 -
新添加域名的
推荐配置 -> 域名配置
。-
根据提示创建
CNAME
解析。项 值 备注 记录类型 CNAME 主机记录 test_1 .example.com 解析请求来源 默认 默认 记录值 test_2.example.com.w.kunlunaq.com 示例 TTL 10 (推荐) 默认 -
添加缓存过期时间
。项 值 备注 类型 目录 地址 / 过期时间 7 天 权重 1 规则条件 不使用 -
页面优化
。项 值 备注 HTML优化 关闭 CSS优化 关闭 JavaScript优化 关闭 -
Range回源设置
。项 值 备注 Range回源 不使用Range回源 规则条件 不使用 -
Gzip压缩
。项 值 备注 Gzip压缩 关闭 -
带宽封顶
(先进行授权)。项 值 备注 带宽封顶 开启 带宽上限 10 Gbps
-
三、支持 IPv4/IPv6 访问
现在访问 http://test_1.example.com 提示 502 Bad Gateway。
在 内容分发服务 -> 域名管理
中,打开 test_1.example.com
的管理界面。
-
在
域名(管理界面) -> 基本设置
中可以增加源站信息。项 值 备注 IPv6 开关 开启 开启后,将支持以 IPv6 协议访问 CDN ,并转发给源站。 -
域名(管理界面) -> 回源配置
。IPv6 回源:开启 IPv6 回源功能以后, CDN 回源侧将提供 IPv6 服务,能够使用 IPv6 地址访问源站服务器。
项 值 备注 优先使用 IPv6 关闭 开启后, CDN 回源侧将优先使用 IPv6 服务。 CDN 节点或源站不具备可用的 IPv6 地址时,将使用 IPv4 建连。 回源跟随 关闭 开启后, CDN 回源将跟随客户端请求的 IP 协议版本,互为主备。 回源 IPv4/IPv6 轮询 开启 开启后,不论客户端请求使用的是 IPv4 还是 IPv6 ,都会使用轮询方式回源到各个源站地址。 回源 IPv4/IPv6 轮询:
- IPv4/IPv6 负载均衡 功能与 优先使用IPv6、跟随客户端协议 这两个功能互斥, IPv4/IPv6负载均衡 一旦开启, 优先使用IPv6 和 跟随客户端协议 这两个功能就会失效。
- 如果 IPv4、IPv6 地址配置了权重比例,将按照权重比例回源。
这时再访问 http://test_1.example.com 则直接提供正常 HTTP 服务。
-
域名(管理界面) -> 流量限制
。-
流量封顶。
项 值 备注 统计周期 当天24点前 阈值 5 GB 解封时间 1 小时 -
带宽封顶(前面已设置)。
-
HTTPS请求数封顶。
项 值 备注 当天24点前 阈值 10 百万次 解封时间 1 小时
-
四、配合后端 NGINX 反向代理
CDN 能绑定多个域名代理服务,但无法通过添加端口访问。可以通过 条件源站
进行配置访问多个服务,但没来得及研究了。
对应 ## 二、阿里云 CDN 基础配置
中,对 内容分发服务 -> 域名管理
做的配置,端口:8888。
-
后端 NGINX 配置。
version: '3.1' services: nginx: restart: always image: nginx:latest container_name: nginx ports: - 8888:8888 volumes: - /vol1/1000/_docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf - /vol1/1000/_docker/nginx/conf.d:/etc/nginx/conf.d
-
NGINX 站点配置。
server { listen 8888; server_name test_2.example.com; location /work { return 301 $scheme://$host:$server_port$uri/; # 301重定向到带斜杠的URL } # 方案1:路径替换(推荐) location ^~ /work/dynamic/ { proxy_pass http://<代理地址>:8888/dynamic/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 必填 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Proxy-Source "/work"; # 必填 # 性能优化参数 proxy_connect_timeout 60s; proxy_read_timeout 90s; proxy_buffering off; # 实时流或大文件场景 } # 拦截直接访问根路径的请求 location / { return 404; # 避免直接暴露后端端口 } # 全局安全头部 add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "SAMEORIGIN"; }
五、开启 CDN SSL
在 内容分发服务 -> 域名管理
中,打开 HTTPS配置
界面。
-
HTTPS证书。
项 值 备注 HTTPS安全加速 开启 证书来源 云盾(SSL)证书中心 也可以选 自定义上传(证书+私钥)
证书名称 <证书对应域名> 证书(公钥) — 粘贴 私钥 — 粘贴 现在没有免费的一年期证书了,阿里云有3月期的试用证书,以及一年期、68元证书。可以先用试用证书试一试。
试用证书可以直接通过
云盾(SSL)证书中心
下拉栏选择。 -
HTTP/2设置:开启。
-
强制跳转:设置
跳转类型
为HTTP - > HTTPS
。
至此,实现了 CDN -> NGINX(/work) -> 源站
路径,通过二级 NGINX 的 URI 进行访问中转,实现一个 CDN 访问多个服务。
六、支持回源源站 SSL
在 内容分发服务 -> 域名管理
中,打开 回源配置
界面。
-
修改
回源协议
(静态协议跟随回源),并开启。项 值 备注 协议类型 跟随 HTTP端口 8888 源站端口 HTTPS端口 8888 源站端口 该功能可以配置回源协议,回源协议支持HTTP和HTTPS,并且可以自定义协议对应的端口(开启该功能以后,在基本配置的源站信息里添加的源站端口配置将会失效)。
七、更多功能
-
刷新预热。
CDN 加速的服务,存在一定的刷新延迟,可以手动进行刷新预热,进行刷新。