华为云 Flexus + Cloudflare:一个 AI 工具导航站的低成本部署实战
华为云 Flexus + Cloudflare:一个 AI 工具导航站的低成本部署实战
背景
我运营一个面向海外用户的英文 AI 工具导航站,几千个工具页面,流量以搜索和爬虫为主,特点是页面多、长尾重、单页访问量低。这样的站最怕两件事:一是源站被海量低频请求拖垮,二是安全规则和缓存规则互相打架。
这篇记录我用华为云 Flexus + Cloudflare 这套组合跑下来的做法,成本低,基本不用天天盯着。
服务器选型:Flexus L 够用了
导航站是典型的读多写少,瓶颈不在计算而在出方向带宽和并发连接。我的做法是:
- 一台 Flexus L 实例,Ubuntu + Apache,网站和自建邮件同机;
- 数据库和 Web 服务只绑本地回环,不对外暴露端口;
- 系统层面只放行 22 / 80 / 443,SSH 只允许密钥登录。
长尾页面多,单机扛不住全量爬虫流量,所以源站前面必须有一层 CDN,而不是给源站加配置。
域名接 Cloudflare:先把三件事定死
域名 DNS 托管迁到 Cloudflare 后,先定死三项基础设置,后面所有规则都建立在这上面:
- SSL 加密模式选「完全(严格)」:源站配好有效证书,Cloudflare 到源站全程加密验链。只选「灵活」等于浏览器到 Cloudflare 一段是加密的,后半段是明文,等于没做完。
- 强制 HTTPS + TLS 最低 1.2 + HTTP/3:老客户端直接升级,协议层面先干净。
- HSTS 开启:浏览器记住只走 HTTPS,避免中间人降级。
这三项定死之后,再谈缓存和安全规则才有意义。
缓存:游客页缓存,动态口子全部排除
导航站 90% 以上的请求是游客看页面,登录态、后台、提交接口只占极少数。我的缓存规则是:
- 游客访问的页面走边缘缓存;
- 登录、后台、提交投稿、API 接口全部排除,不进缓存;
- 边缘 TTL 拉长到 1 天,浏览器 TTL 保持 300 秒。
这里有个取舍要说清楚:边缘 TTL 拉长后,工具信息改了,前台最多晚 1 天才刷新。对导航站这种内容更新不敏感的站,这个代价换源站压力下降是值得的;但如果是价格、库存这类实时信息,就不能这么拉。
效果上最直观的是图片类资源:缓存命中后,大部分图片请求不用回源全量拉,源站带宽压力下来不止一个量级。
安全:免费版只有一个限速名额,先保最要紧的
Cloudflare 免费版限速规则只有一个名额,我的取舍是:
- 这个名额留给「泄露凭据检测」规则:撞库请求直接挡在边缘;
- 扫描探测类路径(install.php、.env、wp-config、.git 这类)用 WAF 规则直接回 403;
- Bot Fight 保持关闭:导航站依赖搜索引擎爬虫,误伤爬虫比放过几个坏请求代价大。
另外有一条放行规则必须保留:站内自动化脚本调 WordPress REST 接口时,带特定 UA 和 rest_route 参数的请求要跳过浏览器完整性检查,否则自己的脚本先被挡在外面。
邮件:自建邮局 + 三项认证缺一不可
站内通知邮件走自建邮局,SPF、DKIM、DMARC 三项必须配齐,缺一项都可能进垃圾箱。我的经验是:
- 发信域名和收信域名分开管理,互不干扰;
- 改完记录先用在线工具验一遍三项是否全部通过,再开通知开关;
- 通知链路先在小范围实测一封,确认进箱再全量放开。
两个实测踩过的坑
坑一:主题字段的真实用途要先看源码。 我曾在分类的 description 字段里填了两百多字的 SEO 描述,结果父分类页被挤成竖条乱码。查了主题才知道,那个字段在主题里是图标位,只放一个 emoji。教训:任何一个字段,填之前先看它在前端到底渲染成什么。
坑二:缓存和实时性是跷跷板。 边缘缓存开大后,后台改完内容前台不立刻变,别急着怀疑缓存坏了,先看 TTL 设置。改内容前先想好:这个页面允许多久的延迟。
成本和收益小结
这套组合的月成本就是一台 Flexus 实例 + 域名,Cloudflare 免费版够用。换来的结果是:源站不再直接面对全网爬虫和扫描器,图片和长尾页面的请求大部分由边缘消化,日常基本不用登录服务器处理突发流量。
适合的场景:读多写少、页面多、内容更新不敏感的展示类站点。不适合的场景:实时交易、价格库存敏感、强登录态互动的产品,那些要把缓存策略反过来做。
- 点赞
- 收藏
- 关注作者
评论(0)