酒排名网 技术更新记录 · 2026-09-15 ~ 2026-09-16

模块一:ERR_CONNECTION_RESET 根因排查与修复(核心主线)

故障现象

  • 间歇性打不开,报错 ERR_CONNECTION_RESET / PR_CONNECT_RESET_ERROR
  • 集中在「保存/发布文章」那一刻,普通浏览基本正常
  • 此前恢复要等好几分钟,后期缩短到「刷新一次就好」(说明在收敛)

排查历程(按时间线,外部 → 内核 → 应用层)

日期 排查项 结论
09-15 CDN IP 访问限频、防盗刷、合并回源 已全部关闭,仍偶发 → 非 CDN 配置
09-15 腾讯云工程师(2次) 确认源站 115.159.193.205 在回源时主动发 RST,影响 miss 请求 11.2%,问题在源站侧
09-15 宝塔 Nginx 防火墙 / limit 规则 未安装 / 站点无 limit 规则 → 排除
09-15 PHP-FPM 池子 max_children=100 不算小 → 排除
09-15 Nginx 连接数 worker_connections=51200 → 排除
09-15 负载 / iptables load 0.24、ESTAB 37、iptables 仅宝塔默认 → 排除
09-15 HTTP/2 回源 10:30 关闭后 5 小时仍犯 → 排除
09-15 Nginx fastcgi_cache 混乱 日志实锤目录 unlink failed;关闭(CDN 已承担缓存,源站这层冗余增不稳)
09-16 腾讯云轻量防火墙(安全组) 全部纯放行规则、443 对全网开放、无限连 → 排除
09-16 内核层:conntrack 818 / 262144 远未满 → 排除
09-16 内核层:backlog SYN dropped 仅 6 → 排除
09-16 reset_timedout_connection 未开启 → 排除

🎯 真凶锁定:宝塔免费 Lua WAF(/www/server/free_waf)

证据(09-16 错误日志):

叠加满屏 lua udp socket read timed out(WAF 每请求向外发 UDP 查询且超时)。

崩溃机理

Lua 线程一崩,Nginx 立刻 RST 断连 → 与「保存文章时 RESET、刷新一次就好」严丝合缝。

注意:之前 09-15 说「宝塔 Nginx 防火墙未安装」是漏看——面板开关指付费版;实际跑着的是 free_waf(面板侧边有 WAF 菜单),不在那个开关里。

✅ 修复动作(09-16 10:47 已落地)

  • WAF 加载点:/www/server/panel/vhost/nginx/free_waf.conf (含 init_by_lua_file + access_by_lua_file + 三块 lua_shared_dict

验证标准

  • 保存文章不再 RESET + 错误日志无 attempt to compare number with nil → 结案
  • 回滚命令(万一出问题):cp /www/server/free_waf/init.lua.bak.0916 /www/server/free_waf/init.lua && nginx -s reload

遗留(未解决,独立次要)

  • lua udp socket read timed out:WAF 向外发 UDP 查询超时,只慢不崩。下一步关掉 WAF 的远程信誉查询或换腾讯云边缘防护。

模块二:公众号采集文章 HTML 自动化清理

背景:采集公众号文章时,正文带大量 <section> 结构壳 + 微信图片残留属性(data-src=mmbiz.qpic.cn、data-w、data-ratio、class=”rich_pages wxw-img”),导致 HTML 臃肿、编辑器混乱、暴露采集指纹、影响 SEO 卫生。

交付文件清单

文件 类型 作用 部署位置
jiu-section-to-p.php mu-plugin v1.1 保存时把 <section><p> /wp-content/mu-plugins/
jiu-wechat-img-clean.php mu-plugin v1.1 保存时清理图片 data-* / 微信类名 /wp-content/mu-plugins/
batch-section-to-p.php 一次性脚本 存量文章批量转(二合一) /wp-content/jiu-price-import/,跑完即删

关键踩坑与修复

  1. section 插件 v1.0 导致文章页 403(上线即现,删掉恢复)
    • 根因:v1.0 挂钩 the_content每次前台渲染跑正则,长文触发 PCRE 上限 → 在 CDN 前显示 403
    • 修复 v1.1:删掉前台钩子,只保留 content_save_pre(写库时转一次);加两道保险(正文 >20万字符跳过、正则失败原样返回)
  1. 图片清理插件「前台干净但后台还有 data-*」
    • 根因:v1.0 只挂 the_content 渲染层,不改数据库,后台编辑器显示的是库里原始 HTML
    • 修复 v1.1:增加 content_save_pre 保存时清理写库,后台编辑器从此也干净
  1. 批量脚本升级为「二合一」:一次跑完 section→p + 图片清理

使用方式


模块三:安全加固提醒(来自日志观察)

  1. 站点正被全天候扫描攻击——日志满屏 /1.php/eoffice10/.../u3pdf.php/search.php?...print\id`(SQL注入)、/wp-register.phpPrimary script unknown`。目前靠 free_waf 在挡,临时关 WAF 前务必确认腾讯云 CDN WAF 开着
  1. 端口暴露风险8899(自动发文)、8888(phpMyAdmin)、20088(宝塔面板) 对全网开放。建议把 8888 / 20088 来源改成常用 IP。
  1. .well-known 探测:日志一堆 .well-known/*.json 404,无害,可忽略或建空文件消解。

时间线速查

  • 09-15:客户也遇 RESET → 腾讯云确认源站 RST → 排除防火墙/limit/PHP-FPM/Nginx连接数/负载/iptables/HTTP/2 → 关 fastcgi_cache → 完整 nginx 配置审计
  • 09-16:排除安全组/内核层 → 锁定 free_waf Lua 崩溃(init.lua:421) → 打补丁修复 + reload 落地 → 公众号清理插件 v1.1 迭代(删前台钩子、保存时写库)