标题: 利用 EdgeOne 边缘函数写入 Cloudflare IP GeoLocation 回源请求头以支持 WP-Statistics GeoIP
作者: #贺兰星辰
板块: #文档共建
编号:
帖子: https://linux.do/t/topic/964063
时间: 2025-09-17 17:02:41
摘要:
作者: #贺兰星辰
板块: #文档共建
编号:
964063帖子: https://linux.do/t/topic/964063
时间: 2025-09-17 17:02:41
摘要:
(标题很长,但这已经是我能想到的最短的叫法了)
前言
昨天群友发来一个 EdgeOne 领取免费版套餐兑换码的链接,竟然是 100% 中奖,每周 2000 份,每月更新(截止到现在也就兑了 350 份,基本是随便送了),一直很想把现有的国内腾讯云 CDN、国外 Cloudflare 的方案迁移到 EdgeOne 上,但奈何一直领不到免费版兑换码,这次终于如愿,遂赶紧噼里啪啦配置一顿,工作良好。
基本功能配置完毕,看了下 EdgeOne 有哪些额外功能,注意到 EdgeOne 支持携带客户端 IP 的地理位置信息回源,这让我想起来 Cloudflare 有一个名为 IP GeoLocation 的玩意儿,做了同样的事情,会把用户的国家码注入到 CF-IPCountry 请求头上给下游用(当然 EdgeOne 这里默认名称是 EO-Client-IPCountry)。
这让我想起来我的 WP-Statistics 插件也支持 Cloudflare IP GeoLocation 作为位置检测方法,于是探索了一下怎么让 EO 支持这套东西。本来以为简单配配规则引擎上的回源请求头就行了,结果完全没这么简单… 兜兜转转整了一天,终于探索出一套解决方案,遂分享出来(绝对不是水博客!)
解决方案
此方案也适用于其他需要在 EdgeOne 上使用 Cloudflare IP GeoLocation 同款请求头的需求。
首先,根据 WP-Statistics 源代码中的 CloudflareGeolocationProvider,可以看到 WP-Statistics 通过 isAvailable 和 isBehindCloudflare 两个函数判断是否可以使用 Cloudflare IP GeoLocation 作为位置检测方式 —— 后者是初步判断,只有满足后者才能在设置中启用 IP GeoLocation;前者是最终判断,如果这个不为 true,即使你启用了 IP GeoLocation,也会被 fallback 到 MaxMind GeoIP 数据库的查询模式。
因此,取此二者函数所需要的请求头的并集,就得到了我们需要在 EO 上配置的回源请求头列表:
HTTP_CF_CONNECTING_IP
HTTP_CF_IPCOUNTRY
HTTP_CF_IPCONTINENT
HTTP_CF_REGION
HTTP_CF_IPCITY
HTTP_CF_IPLATITUDE
HTTP_CF_IPLONGITUDE
HTTP_CF_POSTAL_CODE
他们分别反映了访问者的连接 IP、所在国家、大洲、地区/州省、城市、经纬度、邮政编码(我不知道为什么他需要这个,而且事实上 EO 也提供不了这个,所以最后 Mock 了一个默认值)
但是很遗憾的是,EdgeOne 当前的规则引擎系统不支持配置地区和经纬度,所以这部分会交由边缘函数来做(别问我为什么边缘函数支持但是规则引擎不支持,另外也别问我为什么不全放到边缘函数上,规则引擎支持的大洲信息到边缘函数这儿又不支持了)。
于是,我们首先在规则引擎上配置如下修改回源请求头规则:
CF-IPCity: ${http.request.ip.city}
CF-IPCountry: ${http.request.ip.country}
CF-IPContinent: ${http.request.ip.continent}
CF-Connecting-IP: ${http.request.ip}
然后,在 EdgeOne 边缘函数上配置如下代码:
async function handleRequest(event) {
const { request } = event;
// 修改请求头
request.headers.set('cf-iplongitude', request.eo.geo.longitude);
request.headers.set('cf-iplatitude', request.eo.geo.latitude);
request.headers.set('cf-region', request.eo.geo.regionName);
request.headers.set('cf-region-code', request.eo.geo.regionCode);
request.headers.set('cf-postal-code', '000000'); // EO 不支持邮政编码,我也不知道 WP Statistics 拿这个干什么用,所以返回一个 000000
const response = await fetch(request);
return response;
}
addEventListener('fetch', event => {
// 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站
event.passThroughOnException();
event.respondWith(handleRequest(event));
});
配置好边缘函数的触发规则后应该就可以正常运行了。最后,注意边缘函数免费版是有用量限制的,小心被用爆。
后记:边缘函数很好玩,顺带做了个 AVIF 转换器
这功能挺好的,直接贴代码,如果用户浏览器支持 avif 就会转换成 avif,不支持就转换成 webp,否则就不转(注意配置完后记得限定触发规则为仅当文件后缀为 jpg, jpeg, png, webp 时才触发,避免浪费):
async function handleEvent(event) {
const { request } = event;
// 获取客户端支持的图片类型
const accept = request.headers.get('Accept');
const option = { eo: { image: {} } };
// 检查客户端是否支持 WebP 格式的图片,若不支持响应原图
if (accept && accept.includes('image/webp')) {
option.eo.image.format = 'webp';
}
// 支持 Avif 优先走 Avif
if (accept && accept.includes('image/avif')) {
option.eo.image.format = 'avif';
}
const response = await fetch(request, option);
return response;
}
addEventListener('fetch', event => {
// 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站
event.passThroughOnException();
event.respondWith(handleEvent(event));
});
配置好了以后网页访问速度有肉眼可见的提升,Lighthouse 的 Performance 分数也高了些,针不戳。
标题: 迪士尼等三巨头联手起诉中国AI公司海螺-MiniMax,索赔金额或达天文数字!
作者: #ubert
板块: #前沿快讯
编号:
帖子: https://linux.do/t/topic/964066
时间: 2025-09-17 17:02:56
摘要:
作者: #ubert
板块: #前沿快讯
编号:
964066帖子: https://linux.do/t/topic/964066
时间: 2025-09-17 17:02:56
摘要:
迪士尼、华纳兄弟和环球影业联合起诉中国AI公司MiniMax,指控其通过海螺AI服务大规模侵犯著作权。诉讼涉及未经授权使用电影角色进行AI训练和商业化运营,可能引发对AI行业的版权法律争议。三家公司要求MiniMax返还所有侵权所得,并按每项著作权最高15万美元的标准请求赔偿,总金额可能达到天文数字。
标题: 国内的visa+国内edu能搞az200或者100吗
作者: #XinXing
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964068
时间: 2025-09-17 17:03:13
摘要:
作者: #XinXing
板块: #搞七捻三
编号:
964068帖子: https://linux.do/t/topic/964068
时间: 2025-09-17 17:03:13
摘要:
现在着急搞个openai的key和claude的key用,如果不行就只能去买3元子1刀的key了
标题: 更新 macOS 26 发现了几个史诗级修复()
作者: #晴
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964069
时间: 2025-09-17 17:03:27
摘要:
作者: #晴
板块: #搞七捻三
编号:
964069帖子: https://linux.do/t/topic/964069
时间: 2025-09-17 17:03:27
摘要:
通知可以直接清空,不用点小菜单点两次了
窗口开启关闭有动画了(史诗级更新!)
(但是只有“窗口关闭”有动画,“应用退出”是没有动画的比如计算器)
侧边栏变丑了
圆角不统一,侧边栏还改成了内嵌面板
启动台砍了,变这个了
中文输入法消失的问题好像修复了,更多待我多用几天再试试
标题: macos26 有办法自动切换壁纸吗
作者: #Orage Cat
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964080
时间: 2025-09-17 17:09:03
摘要:
作者: #Orage Cat
板块: #搞七捻三
编号:
964080帖子: https://linux.do/t/topic/964080
时间: 2025-09-17 17:09:03
摘要:
有四个时间段,想根据时间自动切换
标题: 一个新外卖商家给我发的,说上了外卖平台,但觉得好亏,460的营业到手234
作者: #今天学点啥
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964088
时间: 2025-09-17 17:11:47
摘要:
作者: #今天学点啥
板块: #搞七捻三
编号:
964088帖子: https://linux.do/t/topic/964088
时间: 2025-09-17 17:11:47
摘要:
如图:460的营业额,需要扣除总共是225的费用,到手只有234.
我没不清楚这个到底是咋回事,发个帖咨询下各位佬友。
看上去这个商家确实没啥赚头! 有没有什么办法是可以解决这个问题的?
标题: 关于付费生图API
作者: #Yoga
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964089
时间: 2025-09-17 17:12:18
摘要:
作者: #Yoga
板块: #搞七捻三
编号:
964089帖子: https://linux.do/t/topic/964089
时间: 2025-09-17 17:12:18
摘要:
有佬推荐一下第三方生图API提供商吗 可以付费 稳定就行
目前在用flux-1和nanobanana但是都是白嫖的好多有NSFW和次数限制
(主要目的是画图GHS)
标题: gcp300过审
作者: #柳楠曦
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964096
时间: 2025-09-17 17:14:24
摘要:
作者: #柳楠曦
板块: #搞七捻三
编号:
964096帖子: https://linux.do/t/topic/964096
时间: 2025-09-17 17:14:24
摘要:
上个赠金过期了,用小号再开一个自己用。
美区机场;几个月前开的小号;pokepay5刀开卡(想开信用卡银行不给我过。。。);googleplay买两本书包一下。
可能是小号太久没用了,刚开始申请给卡,用小号登各种平台刷存在感用了几天,今天就过了,但是交了10刀押金。感觉号是最重要的,其他都可以混混。
顺便问问各位佬,gpt5现在用着怎么样,如果成本不比gemini 2.5 pro高的话,我也想整来试试。
标题: 大四好迷茫啊
作者: #GAIVR
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964105
时间: 2025-09-17 17:16:19
摘要:
作者: #GAIVR
板块: #搞七捻三
编号:
964105帖子: https://linux.do/t/topic/964105
时间: 2025-09-17 17:16:19
摘要:
我最近有个问题,我分不清我到底应该怎么做事。我想要研究很厉害很厉害的东西,我想成为最厉害的人。但是,我身边的所有人都在说,不要好高骛远,要从小做起,做实验也要做最简单的什么的,做研究也是做最简单的分类问题刷分什么的。学校的课也真的感觉不到用处。我喜欢的东西是LLM,NLP,心理学,行为设计等等的。我的拍脑袋理想是 “构建人类心智状态的计算模型(Computational Models of Human Mental States),并开发基于该模型的主动式、个性化、适应性干预系统,以增强个体的能动性与幸福感。” 但是,我完全不知道怎么才能一步一步做到我的想法,我甚至不知道我能不能有硕士学上,更不知道能不能读博,但是我真的想研究这个方向,但是我又没有钱,我又需要考虑生存的问题,我好迷茫。
标题: 就近期国庆抢票难,延伸一点我对AI影响就业的思考
作者: #mrslimslim
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964106
时间: 2025-09-17 17:16:21
摘要:
作者: #mrslimslim
板块: #搞七捻三
编号:
964106帖子: https://linux.do/t/topic/964106
时间: 2025-09-17 17:16:21
摘要:
最近总在论坛上看到大家抱怨国庆的票太难抢了。这让我想到,咱们国家虽然有世界一流的公路和铁路网,可一到国庆、春节这种节假日,大多数人的出行还是非常折腾,要么堵死在路上,要么根本抢不到票。
说实话,这种体验真的很糟糕。当然,这种极端情况一年也就那么几天,如果单纯为了这几天去大规模扩建交通设施,那本来就在亏损的铁路运营只会亏得更厉害。
但我换个角度想,未来也许就不一样了。等到AI、机器人和新能源(比如可控核聚变)技术足够发达了,我们就可以用机器人去进行高效的维护和建设,这样一来成本就能降得极低。到那个时候,大家出行就会有更多的选择,过年过节再也不用发愁了。而客流量的大幅增加,又能反过来促进经济发展,甚至创造出更多相关的新工作。这个道理其实也能用在很多其他领域,比如基站建设这种运营成本特别高的地方。
另外,现在很多人都担心机器人会抢走我们的饭碗。关于这一点,我觉得答案其实可以在《资本论》里找到。
你想想,如果机器人真的大规模取代了人类来生产,生产效率高到不可思议,那问题就来了:生产出来的海量商品,要卖给谁呢?资本的唯一目的就是不断地赚钱和扩张。如果老百姓都失业了,没有了消费能力,那资本家生产再多东西也卖不出去,整个体系就玩不下去了。
所以说,这其实是资本主义需要从根上解决的问题。我觉得美国甚至比我们更迫切地想要找到答案,因为这直接动摇了他们的根本。正是想通了这一点,我对长远的未来反而是很乐观的。
标题: 现在写 SpringBoot 项目,选 Java 还是 Kotlin 呢?
作者: #友人
板块: #开发调优
编号:
帖子: https://linux.do/t/topic/964108
时间: 2025-09-17 17:16:33
摘要:
作者: #友人
板块: #开发调优
编号:
964108帖子: https://linux.do/t/topic/964108
时间: 2025-09-17 17:16:33
摘要:
公司现在需要做一个后端项目,使用 SpringBoot,推荐使用 Java 还是 Kotlin 呢?
标题: Claude 最近真崩了
作者: #waffie
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964111
时间: 2025-09-17 17:17:45
摘要:
作者: #waffie
板块: #搞七捻三
编号:
964111帖子: https://linux.do/t/topic/964111
时间: 2025-09-17 17:17:45
摘要:
全是声讨
标题: 火绒拦截clash verge的内核verge-mihomo访问钓鱼网址file.uhsea.com
作者: #GMYXDS
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964115
时间: 2025-09-17 17:19:09
摘要:
作者: #GMYXDS
板块: #搞七捻三
编号:
964115帖子: https://linux.do/t/topic/964115
时间: 2025-09-17 17:19:09
摘要:
如图
有懂安全的佬吗,这个对吗?
风险分类:钓鱼仿冒
访问网址:file.uhsea.com
操作结果:已阻止
进程ID:16880
操作进程:D:\Program Files\Clash Verge\verge-mihomo.exe
操作进程命令行:"D:\Program Files\Clash Verge\verge-mihomo.exe" -d C:\Users\-\AppData\Roaming\io.github.clash-verge-rev.clash-verge-rev -f C:\Users\-\AppData\Roaming\io.github.clash-verge-rev.clash-verge-rev\clash-verge.yaml
标题: 宽带咨询一下
作者: #John
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964116
时间: 2025-09-17 17:19:14
摘要:
作者: #John
板块: #搞七捻三
编号:
964116帖子: https://linux.do/t/topic/964116
时间: 2025-09-17 17:19:14
摘要:
佬友们,能分享一下你们的宽带价格吗?
我这电信200M 59/月,有点贵啊。这里面是不是有什么路子
标题: banana无法换脸?
作者: #刘西瓜
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/964118
时间: 2025-09-17 17:20:20
摘要:
作者: #刘西瓜
板块: #搞七捻三
编号:
964118帖子: https://linux.do/t/topic/964118
时间: 2025-09-17 17:20:20
摘要:
小香蕉p图很厉害,但是生成的图效果不好,所以换了个思路,先让其他模型出图,再进行换脸适配,结果??我整个人都不好了,应该怎么玩儿?