阿里云 CDN 实现加速 IPv6 服务到公网(IPv4、IPv6)

简而言之,服务器过期了,太贵了买不起,找替代方案。

一、准备工作

  1. 关于阿里云 CDN :加速——受限制的代理。

    • 当客户端和 CDN 交互的时候, CDN 作为一个服务端, 只提供 80443 端口的服务。也就是说,客户端只能访问 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的形式访问。

  2. 支持仅 IPv6 源站转 IPv4/IPv6 代理。

    这项功能倒是非常方便。

  3. 加速的后端服务,至少要在 IPv4 或者 IPv6 的一类公网可以正常访问,才可以进行国内全域的代理。

  4. 购买阿里云 CDN/全站加速资源包

    备注
    商品类型 CDN/全站加速资源包
    资源包类型 下行流量
    下行流量 50G
    加速区域 全国通用(中国内地)
    套餐 中国内地通用流量包
    购买有效期 1年
    费用 8.40 元

    说实话,虽然后面复杂很多,但是比云服务器便宜,先试试水,自己小网站无所谓了。

二、阿里云 CDN 基础配置

在阿里云 CDN 服务中,内容分发服务 -> 域名管理 中添加域名。

  1. 添加域名

    备注
    加速区域 仅中国内地
    加速域名 test_1.example.com 示例,建议二级域名
    业务类型 图片小文件
    资源分组 默认资源组
  2. 源站信息 -> 新增源站信息

    备注
    源站信息 源站域名
    域名 test_2.example.com 示例
    优先级
    权重 10
    端口 8888 示例
  3. 新添加域名的 推荐配置 -> 域名配置

    • 根据提示创建 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 的管理界面。

  1. 域名(管理界面) -> 基本设置 中可以增加源站信息。

    备注
    IPv6 开关 开启 开启后,将支持以 IPv6 协议访问 CDN ,并转发给源站。
  2. 域名(管理界面) -> 回源配置

    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 服务。

  1. 域名(管理界面) -> 流量限制

    • 流量封顶。

      备注
      统计周期 当天24点前
      阈值 5 GB
      解封时间 1 小时
    • 带宽封顶(前面已设置)。

    • HTTPS请求数封顶。

      备注
      当天24点前
      阈值 10 百万次
      解封时间 1 小时

四、配合后端 NGINX 反向代理

CDN 能绑定多个域名代理服务,但无法通过添加端口访问。可以通过 条件源站 进行配置访问多个服务,但没来得及研究了。

对应 ## 二、阿里云 CDN 基础配置 中,对 内容分发服务 -> 域名管理 做的配置,端口:8888。

  1. 后端 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
    
  2. 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配置 界面。

  1. HTTPS证书。

    备注
    HTTPS安全加速 开启
    证书来源 云盾(SSL)证书中心 也可以选 自定义上传(证书+私钥)
    证书名称 <证书对应域名>
    证书(公钥) 粘贴
    私钥 粘贴

    现在没有免费的一年期证书了,阿里云有3月期的试用证书,以及一年期、68元证书。可以先用试用证书试一试。

    试用证书可以直接通过 云盾(SSL)证书中心 下拉栏选择。

  2. HTTP/2设置:开启。

  3. 强制跳转:设置 跳转类型HTTP - > HTTPS

至此,实现了 CDN -> NGINX(/work) -> 源站 路径,通过二级 NGINX 的 URI 进行访问中转,实现一个 CDN 访问多个服务。

六、支持回源源站 SSL

内容分发服务 -> 域名管理 中,打开 回源配置 界面。

  1. 修改 回源协议 (静态协议跟随回源),并开启。

    备注
    协议类型 跟随
    HTTP端口 8888 源站端口
    HTTPS端口 8888 源站端口

    该功能可以配置回源协议,回源协议支持HTTP和HTTPS,并且可以自定义协议对应的端口(开启该功能以后,在基本配置的源站信息里添加的源站端口配置将会失效)。

七、更多功能

  • 刷新预热。

    CDN 加速的服务,存在一定的刷新延迟,可以手动进行刷新预热,进行刷新。

posted @ 2025-07-01 16:58  Yogile  阅读(227)  评论(0)    收藏  举报