为什么带连字符的 WordPress slug 会触发 WAF 上的 OWASP CRS(以及如何排除该参数)
OCI 的 WAF 在 24 小时内拦了 13 个请求——其中 11 个是误报。它们是带 ?slug=很长的带连字符的值 的 Next.js 重新验证调用,被 OWASP 核心规则集当成了 SQL 注入。修复:在全部 141 个 capability 中排除 slug 参数。
阅读文章关于云基础设施、安全和运营弹性的深度见解。
OCI 的 WAF 在 24 小时内拦了 13 个请求——其中 11 个是误报。它们是带 ?slug=很长的带连字符的值 的 Next.js 重新验证调用,被 OWASP 核心规则集当成了 SQL 注入。修复:在全部 141 个 capability 中排除 slug 参数。
阅读文章一个 WordPress 站点在分布式抓取下每天宕机两次,12 req/min 的限制什么都拦不住。原因是:nginx 按 CDN 的 IP 而非攻击者的 IP 计数。修复是一行 set_real_ip_from——外加一个更紧的分页正则。
阅读文章一个商业扫描器产生了 550 倍于正常的流量,把 CPU 顶到 100%——而 CrowdSec 没有封禁任何人。原因是:该容器在 Docker bridge 网络里无法解析 DNS,陷入重启循环,且没人收到告警。IPS"装上了",却是死的。
阅读文章wp-admin 里一个合法的 84 KB 上传撞上了 403。罪魁是 AWS WAF 的 SizeRestrictions_BODY 托管规则,它只检查请求体的前 8 KB。而修复需要用 ByteMatch 替换正则——因为 CloudFront 的 WAF 不支持 RegexMatchStatement。
阅读文章在 WordPress 层的 AWS→OCI 迁移中,c6g.2xlarge 的 EC2 平均 CPU 只有 6.6%。用 CloudWatch 证明 4 OCPU 就够是容易的部分;差点卡住我们的是托管 MySQL——因为一条必须放在 tenancy root 而非 compartment 的策略。
阅读文章在任何容器上线之前,网络必须先对。把一个交易型应用迁到圣保罗的 OCI 时,三个 VCN 决策决定了其余一切:不能重叠的 CIDR、只有一个 AD 的区域,以及在一个意外前缀上响应的 Service Gateway。
阅读文章在一轮 rightsizing + 预留实例之后,月中验证节省看似简单——而幼稚的按比例分摊会骗你。No-Upfront 预留实例不是分摊到整月的:它作为一笔单独费用出现。这是推算出真实 -57% 的公式。
阅读文章一个拥有 540 GB 视频的课程平台需要交付付费内容而不让链接外泄——且不超预算。CloudFront(固定费率 + Signed URLs)与 Bunny 之间的账,在约 2 TB/月以上就变得清晰,而转码有一笔吓人的一次性成本。
阅读文章周报标出 Route53 +687%、EC2 +34%,我们差点熬通宵去排查。其实没什么可查的:是月度费用(RI、托管区域)落在了窗口内的 1 号。那些区域实际上还下降了 -8.9%。如何用两条命令证明这是误报。
阅读文章在一张 5,682 美元的账单里,有 896 美元藏在不透明的"EC2-Other"标签下。按 USAGE_TYPE 拆开:每月 343 美元来自已删除实例的快照、305 美元 egress、昂贵的 gp2、以及跨 AZ 流量。如何剖开并削减它。
阅读文章一个 EC2 实例群每月直接向互联网流出约 12.5 TB(约 1,124 美元)。CloudFront 固定费率(15 美元/50TB)的账是简单算术——前提是你先按实例度量 egress,而这点 Cost Explorer 不会直白告诉你。
阅读文章Auto Scaling 的扩容告警被设成 CPU ≥ 5% 就触发。任何流量噪声——以及每一次部署——都会拉起一批新实例。两天内 EC2 账单从 23 美元跳到 272 美元。修复只用了一行。
阅读文章logrotate 每天以退出码 1 中止——中止的是机器上每一个文件的轮转,而不只是出问题的那个。三个相互独立的陷阱叠在一起,被 postrotate 里一个 `|| true` 吞掉的 ModuleNotFoundError 所掩盖。本文讲清每种失败模式的行为,以及如何在它于事故中爆发之前测试轮转。
阅读文章每个 CloudFront 分发都可能被自动附加一条 300 次/5 分钟、且没有 scope-down 的限速 WebACL。在一个普通的下午,它对合法的 wp-admin 请求产生了 1,284 次拦截——编辑在上传中途被卡住。修复方法不是调高上限,而是用一个 scope-down 豁免已登录用户。
阅读文章商品能加入侧边迷你购物车,但 /cart/ 页面始终显示为空,没有一个订单能完成。原因是两个叠加的 bug:一个 CloudFront Function 因为前缀错误丢弃了 WooCommerce 的会话 Cookie,以及源站没有发送 Cache-Control。每一层只需一行修复。
阅读文章6周内一个AWS事务性应用节省了$639/月($7,668/年)。节省来自三个顺序阶段,每个阶段解锁下一个阶段。本文讲述为什么顺序至关重要——以及如果我们先购买预留实例会发生什么。
阅读文章WordPress发布文章,触发webhook,Pod A收到调用并使缓存失效。Pod B继续提供2小时前的旧内容。Next.js ISR缓存是按进程的,不是共享的。以下是无需Redis、无需重写Next.js即可解决此问题的架构方案。
阅读文章Cloud Armor策略已正确配置并附加到负载均衡器后端。30天内:139次真实拦截,零误报。但DNS直接指向VM的IP——用户流量从未经过LB,更别提WAF了。
阅读文章2月份,一个多租户WordPress平台上的单个客户占了整个基础设施出口流量的31%——在总计1,088美元中花了342美元。该域名在GoCache CDN上有配置,但3,803 GB的流量直接从EC2流出。Security Group揭示了原因:World SG(0.0.0.0/0)与CDN SG并存,使源站可以被直接访问。
阅读文章839 MB的error.log中累积了928,219次ModSecurity拦截——自2月9日起未做日志轮转。全部是误报。WAF正在封锁Akamai自己的边缘节点,因为没有配置set_real_ip_from。来自CDN的合法请求异常分数高达40到60。
阅读文章WAF正常运行,容器在跑,监控面板绿灯。但网站从早上起就对所有访客返回500。原因:nginx后端的vhost文件为0字节——没有listen 443指令,反向代理试图连接一个没有人监听的端口。
阅读文章系统中查询最频繁的表没有任何索引。每份报告、每个定时任务、每次导出都在全表扫描。RDS CPU峰值达到94.1%。添加索引后:26%。缩容后:db.r6g.2xlarge → xlarge,峰值39.4%——表现良好。总节省:$566/月。顺序至关重要。
阅读文章在ASG + ALB + Docker容器的技术栈上,将PHP 7.4.34升级到8.4.12。Instance Refresh恰好花了8分钟。零停机。需要2个烘焙周期——每个周期都揭露了前一个未曾预料到的错误。以下是完整流程和我们从两个错误中学到的内容。
阅读文章Worker在运行,Redis健康,任务却持续堆积。快递跟踪队列积压1,480个任务,日志中没有任何错误。原因:单线程worker按顺序处理6个队列,外部API的阻塞I/O拖慢了一个队列,导致所有其他队列也被卡住。
阅读文章`sed -i 's/2048mb/1024mb/' docker-compose.yml`修改了文件。`docker inspect`显示容器仍在使用`--maxmemory 2048mb`。原因:`sed -i`创建了一个新inode。Docker的bind mount指向原始inode。nginx -s reload读取的是旧文件。修复方法:`docker compose up -d cache`。
阅读文章高CPU告警。8核服务器负载均值15.18。初始判断:CPU攻击。真实原因:来自<crawler-range>/24网段的爬虫在10分钟内击垮131个PHP-FPM worker,留下4GB核心转储文件——systemd-coredump消耗47%的CPU来压缩每个文件。
阅读文章Cloudflare 504出现在20:23。Nginx记录499——客户端在60秒后断开连接。ASG CPU:4%。三个PHP-FPM池的ListenQueue全部为0。RDS CPU:1-11%。基础设施完全正常。这个事故对所有标准监控都是不可见的。
阅读文章网站将用户重定向到可疑URL,但WordPress 100%干净——无修改文件、无可疑插件、无非法创建的管理员。DNS解析到的IP不属于真实服务器。攻击是通过修改GoDaddy账户中的DNS记录实现的。
阅读文章WordPress后台通过localhost打开只需2毫秒,通过浏览器却要等1分钟。原因不是服务器、数据库或插件,而是一个带有satisfy any和auth_basic的acl.conf文件——它接收到的是CDN的IP而非访客真实IP,对所有人都返回401。
阅读文章凌晨00:11 BRT,一次向main分支的推送导致金融科技应用宕机2分钟,产生了92个HTTP 5xx错误。ASG在21:00已缩减到1个实例。CI/CD流水线对此一无所知。这种组合在每次有人深夜提交代码时都会造成必然的宕机。
阅读文章六个在网络上常见但被 Cloud Controller Manager v1.34 静默忽略的 annotation,以及每次编辑 Service 时触发的 409 Token Collision——唯一的解决办法是删除并重建。
阅读文章在OCI的ARM64 Kubernetes集群上配置日志收集DaemonSet看似简单——直到第一个错误出现。然后是第二个,然后又是六个。每次修复都揭示了下一个问题。本文按顺序记录了所有8个错误,并附上每个错误的原因和解决方案。
阅读文章x86运行器使用--platform linux/arm64时会静默启用QEMU,带来5-10倍的构建时间惩罚。切换到GitHub Actions的ubuntu-24.04-arm可消除模拟,将约40分钟缩短至8-12分钟,无需修改Dockerfile。
阅读文章CPU占用仅4%,但14%的请求耗时超过2秒——有些甚至长达60秒。原因隐藏在6个PHP文件中:CURLOPT_TIMEOUT => 0,在cURL中这不意味着'无限制',而是'永久等待'。
阅读文章20天内,905,000次合法请求被无故拦截并返回429错误。根本原因:$binary_remote_addr信任了ALB节点IP而非真实客户端IP。修复方案:nginx.conf中的3行配置。
阅读文章一个拥有36,508个词条的WordPress词汇表门户每天产生168k次API调用——Next.js ISR每60秒重新验证所有页面,导致PHP-FPM崩溃。解决方案:OpenResty nginx srcache + OCI Cache(Valkey 7.2)通过stunnel,第一天缓存命中率达到93%。
阅读文章在生产环境启用141条OWASP规则而不误封正常用户,远比点击启用按钮复杂。本文记录了我们遇到的所有误报、逐一修复过程,以及OCI WAF文档中未充分说明的陷阱。
阅读文章一个大流量电商门户将基础设施从AWS迁移至Oracle Cloud Infrastructure后,月费用从$1,230降至$265,节省78%,每年节省$11,580。本文详解服务映射、决策过程与迁移经验。
阅读文章记录了在真实AWS到OKE/OCI迁移中遇到的每个技术障碍——从NSG配置错误到Redis缓存TLS冲突。如果您正在评估OKE用于生产环境,请先阅读这篇文章。
阅读文章