nginx www 跳转非www 301:canonical 冲突与验证文件 301 失败的两个坑
站点同时用 www 和非 www 服务同一内容会造成 SEO 重复内容、与 canonical 冲突。nginx 做 www 跳转非www 的 301 归一时,两个坑容易翻车::80 用 $host 会保留 www、百度验证器拒收 301 导致验证失败。
阅读全文 →记录 Web 工程实践:架构、性能、部署与踩过的坑。
站点同时用 www 和非 www 服务同一内容会造成 SEO 重复内容、与 canonical 冲突。nginx 做 www 跳转非www 的 301 归一时,两个坑容易翻车::80 用 $host 会保留 www、百度验证器拒收 301 导致验证失败。
阅读全文 →给生产 Django+uWSGI 站点打补丁后重启,站点直接返回 502?根因常是双 master 并存(uwsgi reload 只重载 pidfile 记录的老实例,真正在服务的旧 master 没被 reload)+ 本机 pgrep/ps -C 取 PID 失灵。附一条踩坑换来的干净重启 SOP。
阅读全文 →装 WSL2 卡住的人,八成是卡在同三个报错上:SetupWizard ended prematurely、WslRegisterDistribution failed、以及 wsl --install 长时间不动。本文逐个给出本机实测的报错原文、根因、可复制的修复命令与验证方式,并附一份安装前 30 秒自检清单。
阅读全文 →浏览器拦下红屏 NET::ERR_CERT_DATE_INVALID,99% 是证书过期。本文给出根因二分排查法(服务端真过期 vs 客户端时间错)、一个能读出"到底过期了多久"的纯标准库检测脚本(附过期站点实证),以及不依赖续期工具的独立预警方案。
阅读全文 →搜 wsl_update_x64.msi、Ubuntu2204 AppxBundle 下载的人,多半正照着一份过时的离线安装教程操作。本文给出结论:新版 Windows 上这个 msi 大概率不需要且会安装失败;正确的装法只有三行命令;离线包只在纯内网才有价值。附实测文件校验值与四个高频坑。
阅读全文 →uWSGI 启动报 bind(): Address already in use,多数不是"端口被别人占了",而是旧进程没退干净。本文用 Python 标准库复现该报错,讲清 4 类根因,并给出上线前端口预检脚本。
阅读全文 →整合项目时,我把生产数据库密码硬编码进了脚本、明文写进了工作日志,还一起提交了。万幸在 push 之前被自己拦下来。本文复盘三个泄露点、四步修复,以及一份可以直接抄的提交前凭据自检脚本——重点是两个反直觉认知:commit 之后仍可挽回,而 .gitignore 漏掉的东西往往比你想的多。
阅读全文 →在 WSL2 里起一个长期运行的开发服务,nohup 会死、setsid 也会死,连 systemd 服务不 enable 照样被停。本文记录三次真实失败、journal 里的关键证据,以及最终可用的完整配置,附带"当场 curl 200 是假信号"等四个反直觉的坑。
阅读全文 →你的 HTTPS 证书真的会自动续期吗?本文记录一次真实的排查:证书只剩 29 天、acme.sh 完全没有定时任务、certbot.timer 空跑制造"很安全"的假象。附完整的自动续期配置、一次续期失败的定位过程,以及三个极易误判的信号。
阅读全文 →