相关文章:
之前发过2篇关于使用CDN搭配STUN穿透来实现完美隐藏端口号访问,现在再加上一个免费的ESA以供参考
一、添加站点
1、添加站点
阿里的ESA注册过程就省略了,我们直接在ESA的站点管理页面添加一个站点,这里以*.a.com为例


2、验证域名所有权
添加完成后需要验证域名所有权,按照要求在DNS解析那里添加上相应的TXT记录即可,验证完成后就可以删除这条TXT验证记录了


3、添加站点记录
此时添加一个站点记录,域名为泛域名,记录值为你的已经绑定ipv4动态域名,这里为ipv4.a.com为例。关于ipv4 ddns动态解析域名的内容,这里就不过多叙述了,如果不懂的话可以先看看这篇文章进行入门lucky+重定向解析:使用Cloudflare+CDN优选+workers重定向到lucky的ipv4-stun穿透http请求来直连飞牛OS


关于这里为什么要使用域名回源而不使用ip回源是因为ESA的回源默认设置不支持直接指定回源端口的,只能在SSL/TLS那里手动指定回源端口号,这样子的话需要对其进行两次更新操作——第一次是回源IP,第二次是回源端口号,这样子就增加的动态更新的复杂度。因此使用域名回源的话可以减少更新难度
网站类型选择为网站页面就可以了

4、添加cname记录
最后还需要添加对应的CNAME记录到DNS解析


完成CNAME解析即可完成站点的添加了

二、配置回源端口号
在SSL/TLS->源站证书修改回源端口号为你的lucky穿透后的公网端口号,协议为https

添加完成后即可完成CDN访问
三、自动同步回源端口号
得益于完善的API体系和cli工具,阿里云cli支持使用命令行直接修改ESA的数据
1、下载cli工具
官网参考链接:在Linux系统上通过Bash脚本或TGZ安装包安装阿里云CLI-阿里云CLI-阿里云
# 下载aliyun-cli
curl https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz -o aliyun-cli-linux-latest.tgz
#arm64链接
#curl https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-arm64.tgz -o aliyun-cli-linux-latest.tgz
#解压文件
tar xzvf aliyun-cli-linux-latest.tgz
#移动到系统目录
mv ./aliyun /usr/bin/
#验证cli是否可用
aliyun versionShellScript2、配置AcessKey
(1)、创建AccessKey
点击头像里面的权限与安全->AcessKey来创建一个令牌

创建一个RAM AccessKey

角色名随意,最后下载AccessKey到本地

(2)、配置AccessKey
在命令行输入下列命令来创建配置文件
aliyun configure set \
--mode AK \
--access-key-id 你的key-id \
--access-key-secret 你的key-secret \
--region "cn-hangzhou" \
--language "zh"ShellScript默认存放在~/.aliyun/config.son下,可以使用cat ~/.aliyun/config.json查看是否生成成功
3、配置API参数
在SSL/TLS->源站证书下面有一个API调试链接打开即可进行调试,也可以点我打开

(1)、获取配置id
先通过站点ID获取到对应的配置id,配置id可以在ESA页面获取


(2)、测试API是否可用
填入下列信息即可完成调试修改测试
- SiteId
- ConfigId
- OriginHttpsPort

此时再返回SSL/TLS,就会发现端口号改变了

(3)、本地测试
点击右上角的cli示例复制到本地执行,查看是否和API调试页面的结果一致,如果一致就说明可以正常使用;如果出现认证问题,请回到2、配置AcessKey来重新配置AccessKey

4、lucky自动执行更新
这里就非常简单了,直接创建一个计划任务为手动执行的就可以了
这里建议在最后加上一行echo可以将错误信息显示出来


最后没有问题就可以在STUN的自定义脚本触发添加上对应的命令就可以了
问题
有时候会遇到lucky里面的计划任务没办法执行的问题,但是在shell又可以正常执行,这种问题可能是lucky内部环境的问题,暂时不知道,仅做记录
解决方法也很简单,在lucky内也执行一次配置生成就可以了
四、自动更新SSL证书
ESA支持申请免费的泛域名证书,并且进行自动续签,这样就不需要我们手动更新和上传证书了
1、托管 DCV
如果使用CNAME的方式接入ESA的话需要添加一个DCV记录来委托证书签署
在SSL/TLS->边缘证书->托管 DCV处复制对应信息

在你的域名添加一个CNAME记录
- 如果你想申请*.a.com的泛域名证书,则添加
| 主机记录 | 记录类型 | 记录值 |
| _acme-challenge | CNAME | a.com.1092xxxxxxxx240.dcv.aliyun-esa.com |
- 如果你想申请*.s.a.com的三级域名,则添加
| 主机记录 | 记录类型 | 记录值 |
| _acme-challenge.s | CNAME | s.a.com.1092xxxxxxxx240.dcv.aliyun-esa.com |
2、申请泛域名证书
添加好DCV记录后就可以直接免费申请泛域名证书了,等待几分钟就可以申请成功了


五、特定url重定向下载
和腾讯的EdgeOne一样,大文件回源下载的话还是会限速的,因此我们可以将需要大文件下载的链接加入重定向规则,这样就可以避免CDN限速来拖慢下载速度
在规则->重定向规则->新增规则来创建重定向规则

1、cloudreve
- 主机名:cloudreve.a.com
- URI路径:/api/v4/file/content
- URI查询字符串:sign
- 类型:动态
- 表达式:concat(“https://cloudreve.s.a.com:6654”, http.request.uri.path)
这里的https://cloudreve.s.a.com:6654需要替换成你自己通过STUN直连访问的端口,通常是与CDN回源端口是保持一致的

2、openlist
因为openlist的下载是有两种下载规则的,一种是预览下载/p/*,另一只是直接下载/d/*,且ESA的一条重定向规则只能添加3个条件,没办法做到同时匹配/d和/p,因此我们需要给openlist创建2个重定向规则,添加的内容是和cloudreve的是类似的,只是url路径不一样而已














看完学习了,等后面继续完善后再部署,继续支持
啥时候能更新个lucky利用ipv6动态更新esa解析的就好了。现在我都是手动去改的ipv6地址,过几天就过期了。还有新增域名也只有手动。
可以的啊,你直接在ESA的回源地址填写你的IPV6域名就可以了啊
对于不支持重定向的手机APP,如jellyfin、群晖,可以用这种方法实现访问吗?
是支持的