用 rsync 和目录切换完成静态站点发布

直接覆盖线上目录时,用户可能在复制过程中读取到不完整资源。即使站点很小,也可以通过临时目录和原子切换减少这个窗口。 先同步到新目录 将构建产物复制到带版本号的目录,完成文件数量、哈希和权限检查。不要在服务器上执行前端构建,生产机只接收确定的产物。 切换软链接 Web 根目录指向 current,发布完成后原子更新软链接,再平滑 reload。旧版本暂时保留,出现问题时可以快速切回。 清理要有保留策略 按版本数量或时间清理旧目录,不使用无条件通配删除。发布脚本应在路径为空或不符合预期时立即退出。

2026年5月9日 · 1 分钟 · Northline

告警太多时,真正的问题可能是没有行动定义

一个指标超过阈值并不天然值得叫醒维护者。高质量告警需要说明用户影响、持续时间和接收者能够采取的动作。 从症状而不是原因告警 单次 CPU 峰值可能没有影响,而持续错误率和延迟上升通常直接影响用户。原因指标适合看板和诊断,症状指标更适合触发通知。 给波动留出窗口 使用持续时间和恢复条件避免频繁抖动。阈值应参考历史基线,而不是复制其他系统的默认数字。 每条告警附带动作 告警说明中至少包含服务、影响范围、相关看板和第一步排查命令。长期无人处理的告警应该删除或降级,而不是继续积累。

2026年4月21日 · 1 分钟 · Northline

反向代理配置中容易被忽略的信任边界

反向代理不仅负责转发流量,也定义了客户端与应用之间的信任边界。默认复制一段配置通常会把不应信任的请求头直接交给后端。 明确真实来源 只有请求确实来自受信任代理时,才能接受 X-Forwarded-For。否则客户端可以自行伪造来源地址,影响审计和访问控制。 限制请求规模 上传大小、请求头大小和超时应根据业务设置。无限等待的上游连接会逐渐占满 worker 和文件描述符。 保持 Host 语义一致 后端依赖域名路由时,应明确传递原始 Host 还是上游 Host。配置不一致会造成回调地址、Cookie 域和重定向错误。

2026年4月5日 · 1 分钟 · Northline

为服务增加 IPv6 前先检查这几件事

增加 AAAA 记录很简单,但双栈意味着多了一套监听、路由和防火墙边界。很多服务的 IPv4 规则完整,IPv6 却处于默认开放状态。 检查监听地址 确认应用是在双栈 socket 上监听,还是分别监听 IPv4 与 IPv6。不同系统的 bindv6only 默认值可能不同,不能只凭配置文件判断。 同步防火墙策略 IPv4 的 iptables 规则不会自动保护 IPv6。使用 nftables 时也要检查规则族和默认策略,确保管理端口没有意外暴露。 验证实际路径 从外部 IPv6 网络测试 DNS、TCP 和 TLS,并检查回程路由。Happy Eyeballs 会掩盖部分 IPv6 故障,因此还需要强制 IPv6 的单独测试。

2026年3月17日 · 1 分钟 · Northline

Fail2ban 适合降低噪音,不适合作为唯一防线

Fail2ban 根据日志模式临时封禁来源,能够减少重复扫描和认证压力,但攻击者更换地址后仍可继续尝试。 先保证认证本身安全 密钥登录、关闭密码认证和限制高权限账户比封禁策略更重要。即使 Fail2ban 停止,认证边界也不应立即失效。 检查匹配范围 日志格式升级后,旧正则可能不再匹配。定期使用 fail2ban-regex 验证真实日志,并观察封禁数量是否突然归零或异常增长。 为管理员地址留出恢复方式 动态网络不适合永久白名单。出现误封时,应能通过控制台或另一条管理链路解除,而不是依赖同一个被封的入口。

2026年3月1日 · 1 分钟 · Northline

老版本 Debian 升级前的检查清单

跨发行版升级不是一次普通的软件更新。依赖来源、配置格式和服务启动顺序都可能发生变化,应先把服务器恢复能力准备好。 清点软件来源 列出系统仓库、第三方仓库和手工安装的二进制。无法确认来源的软件在升级后最容易出现库依赖或启动问题。 检查空间和备份 升级需要额外下载和解包空间。备份至少包括服务配置、数据库、证书和 systemd 自定义单元,并验证备份可以读取。 分阶段执行 先完成当前发行版内更新,再按官方支持路径逐级升级。每一级完成后检查 SSH、网络、磁盘挂载和关键服务,不连续跨过多个版本。

2026年2月16日 · 1 分钟 · Northline

故障复盘先写时间线,再讨论原因

故障结束后直接讨论“谁做错了什么”,很容易让复盘变成观点争论。先建立统一时间线,可以把观察到的事实与事后推测分开。 记录关键事件 时间线应包含第一次异常、告警触发、人工确认、缓解操作、服务恢复和验证完成。每个事件尽量关联日志、监控或变更记录。 区分触发因素与根因 一次发布可能触发故障,但真正的问题可能是缺少容量边界、回滚不可用或测试覆盖不足。修复触发因素并不代表系统性风险已经消失。 改进项必须可跟踪 每项改进应有负责人、范围和完成条件。模糊的“加强监控”无法验收,具体到指标、阈值和演练场景才有执行价值。

2026年2月2日 · 1 分钟 · Northline

防火墙规则需要同时检查顺序和计数

看到一条允许规则不代表流量一定能通过。防火墙按顺序处理,前面的拒绝、跳转链和连接状态规则都会改变最终结果。 从默认策略开始 确认 INPUT、FORWARD 和 OUTPUT 的默认策略,再追踪自定义链。云平台安全组和系统防火墙属于两层控制,也需要分别检查。 观察命中计数 发起一次可控连接后查看规则计数是否增加。没有命中通常说明流量没到服务器、协议族不对,或已经被前置规则处理。 修改前准备回滚 远程修改管理端口规则时,应设置自动回滚任务并保持已有 SSH 会话。新连接验证成功后,再取消回滚。

2026年1月18日 · 1 分钟 · Northline