小樱 发表于 2018/3/5 03:39

cloudflare cf的CDN回源 host如何配置?重写域名和path路径,rewrite函数wildcard_replace 或者 regex_replace

cloudflare cf的CDN回源 host如何配置?重写域名和path路径,rewrite函数wildcard_replace 或者 regex_replace

例如这种东西
https://help.aliyun.com/knowledge_detail/27131.html

https://cloud.tencent.com/document/product/228/6293


找了下文档,CF还算是支持的,不过设置很麻烦
https://i.imgur.com/KKuH8bz.png
(神。。还是昨天发的)
参考:https://support.cloudflare.com/hc/en-us/articles/206652947-Using-Page-Rules-to-Re-Write-Host-Headers

https://support.cloudflare.com/hc/en-us/articles/206190798-Using-Resolve-Override-in-Page-Rules

视乎要200刀版本才支持


2024年11月7日帖子补充
现在cf更新,已经可以用回源(Origin)规则重写回源host,然后也能转换规则重写path路径,就是伪静态文件一样的效果,改变url的path
从文档得知重写path需要wildcard_replace 或者 regex_replace,这里我们采用regex_replace,得知需要的函数是http.request.uri.path

需求,重写回源host后,发现目录存在暴露/public/Android/,需要改成无目录的格式
原有oss
https://bh3rd-app.oss-cn-shanghai.aliyuncs.com/public/Android/20180329-android_versions_v2_2_the_Guardian_of_shenzhou_guofu.apk
域名host重写成功后
http://www.v3.com/public/Android/20180329-android_versions_v2_2_the_Guardian_of_shenzhou_guofu.apk

创建一个转换规则,选择重写URL,规则名
rewrite

自定义筛选表达式,字段,主机名,运算符,等于,值,填写自己需要绑定到oss的域名

设置重写参数,路径,重写到...动态(Dynamic),查询,保留

这就是我们的完整规则
regex_replace(http.request.uri.path,"^/","/public/Android/")

wildcard_replace 方式也可以
wildcard_replace(http.request.uri.path,"/*","/public/Android/${1}")

如图所示


最终得到访问结果
http://www.v3.com/20180329-android_versions_v2_2_the_Guardian_of_shenzhou_guofu.apk

快捷进入重写URL的转换规则入口
https://dash.cloudflare.com/?to=/:account/:zone/rules/transform-rules/rewrite-url

参考:https://developers.cloudflare.com/rules/transform/url-rewrite/reference/fields-functions/
https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/
https://developers.cloudflare.com/ruleset-engine/rules-language/functions/#regex_replace

qctech 发表于 2021/8/24 08:57

请求量少的话可以用Workers回源(

小樱 发表于 2021/8/24 19:28

qctech 发表于 2021/8/24 08:57
请求量少的话可以用Workers回源(

确实,但是不免费,,,就算了
页: [1]
查看完整版本: cloudflare cf的CDN回源 host如何配置?重写域名和path路径,rewrite函数wildcard_replace 或者 regex_replace