息壤者博文
记录开发实践、部署心得与工程规范。
慢耕细作,方得息壤。
编辑精选
技术栈 · 关注方向 · 点击筛选
分类导航
最新文章
-
结构化数据:让搜索读懂内容
用 JSON-LD 把内容结构化告诉搜索引擎,有机会拿到富媒体摘要(评分、时间等)。
-
证书链不完整导致移动端报错?这样修
桌面浏览器宽松,移动端严格:证书链缺了中级 CA,手机就会报「不受信任」。根因往往是配错了文件。
-
关键 CSS:首屏别等整张样式
首屏样式若等整张 CSS 下载完才渲染,用户会看到空白。内联关键 CSS,其余异步加载。
-
Open Graph:分享卡片长这样
分享到社交平台时,卡片长什么样由 OG 标签决定。没配就只剩一条裸链接。
-
WAF 思路:在边缘挡掉脏流量
WAF 不全是买设备。在边缘挡掉注入特征与扫描器,能挡住大部分无脑攻击。
-
静态站点选型:纯 HTML 还是生成器
个人站、文档站用静态方案最省心:不用数据库、不怕注入、随便丢 CDN。生成器适合内容多的博客。
-
进程夯死?先看懂 ps 与 kill
进程不响应,先分清是忙还是死。ps 看资源,strace 看系统调用,再决定怎么结束它。
-
字体加载:FOIT 与 FOUT 的取舍
字体没加载完,文字要么空白(FOIT)要么闪一下(FOUT)。font-display:swap 与预加载能缓解这个。
-
HTTP/2:多路复用救了队头阻塞
HTTP/2 用多路复用解决队头阻塞,几十个小请求不再排队,首屏快一截。
-
A 记录与 CNAME:到底该用哪个
A 记录直接指向 IP,CNAME 指向另一个域名。二者最关键的差异:根域不能用 CNAME。
-
rebase 还是 merge?提交历史的洁癖
rebase 把历史梳成一条直线好看,merge 保留真实分叉。团队定好一种,别混着来。
-
rsync 增量备份比 scp 香在哪
scp 每次全量传,rsync 只传变化块,第二次起飞快,还能做硬链接快照保留多版本。
-
防止 DNS 被劫持的几条硬规矩
运营商劫持、缓存投毒都能让域名指向假站。从解析通道到账户本身都要设防。
-
logrotate:别让日志把磁盘吃满
应用一直写日志,不轮转迟早把磁盘写满。logrotate 按天切割、压缩、留 N 份。
-
SSH 禁密码:只认密钥
密码再复杂也怕撞库与字典。禁密码、只认密钥、禁 root 直登,是 SSH 加固三连。
-
最小权限:容器也别用 root
容器默认可能以 root 跑,一旦被突破就是宿主机 root 的半数权限。降权运行是基本素养。
-
目录结构:别把东西堆在根
所有文件平铺在根目录,三个月后你就找不到北。按 assets/posts 分目录,维护成本直线下降。
-
ufw 防火墙:默认拒绝更安全
新服务器第一件事,是把不必要的端口关上。ufw 是 iptables 的人话封装,默认拒绝最省心。
-
构建产物预压缩省流量
让构建期把 js/css 压成 .gz/.br,Nginx 直接发预压文件,运行时不占 CPU 实时压。
-
漏洞扫描:上线前的体检
上线前扫一遍依赖与镜像,把已知 CVE 拦在发布前,比事后应急便宜得多。
-
黑白名单:基础访问控制
基础访问控制从黑白名单开始:可信段放行,已知坏 IP 拒绝。
-
HTTPS 与证书:为博客加上安全锁
用免费证书给站点开启 HTTPS,配置强制跳转与自动续期,避免混合内容告警。
-
语义化标签:机器也读得懂
用对标签(header/main/article/footer),机器和辅助技术才读得懂结构,SEO 与无障碍双赢。
-
速率限制:API 防刷的第一道墙
API 被刷,先限流。按客户端地址给每个调用方设速率上限,恶意刷子自然熄火。
-
链路追踪:慢请求卡在哪
一个请求穿过五六个服务,慢在哪?靠 trace-id 把各段日志串成一条时间线。
-
sudo 提权的最小权限原则
给同事开 sudo 别直接给 ALL。按命令粒度授权,出事时影响面可控。
-
submodule 还是 monorepo?依赖管理抉择
多个项目共享代码,submodule 各自版本、monorepo 统一版本,取舍看团队边界。
-
增量部署:只传改动的文件
全量传几百 MB 太慢。增量部署只动变化文件,发布从分钟级降到秒级。
-
密钥管理:别把 secret 写进代码
密钥写死在代码里,仓库一克隆就泄露。集中管理或至少环境变量隔离。
-
懒加载:视口外的先别急着取
视口外的图片和 iframe 不必首屏就取,懒加载把请求推迟到用户快滚到时。
-
从零搭建个人技术博客:静态站点选型与部署
为什么个人博客首选静态站点?对比纯 HTML、生成器与动态方案的取舍,并给出最小部署路径。
-
TXT 记录:域名验证与 SPF 的战场
TXT 记录不指向任何地址,专门承载文本信息,最典型用途是域名所有权验证与邮件防伪造。
-
HSTS:让浏览器记住只走 HTTPS
即使用户被 301 跳到 HTTPS,首次那次明文请求仍可能被劫持。HSTS 让浏览器记住:以后只走 HTTPS。
-
Nginx 最小配置:让站点稳定返回 200
一个能直接用的 Nginx 站点配置,覆盖根路径、静态资源与常见 404 排查。
-
解析不生效?按这条顺序排查
改了 DNS 却打不开,先别急着重启。按「权威→递归→本地缓存」三层查,基本能定位。
-
一行配置搞定 HTTP 全站跳转 HTTPS
站点上了 HTTPS 后,必须让所有 http 请求 301 到 https,否则用户手动输域名还会走明文。
-
.gitignore 写错,密钥就泄了
把 .env、密钥文件提交进仓库,等于把家门钥匙挂在门上。.gitignore 是第一道防线。
-
301 还是 302?重定向姿势要正确
同样是跳转,301 告诉浏览器「以后都走这」,302 说「这次而已」。用错会影响缓存与 SEO。
-
缓存头:浏览器本地的加速
缓存头是浏览器侧加速的总开关。强缓存省请求,协商缓存省带宽。
-
brotli 比 gzip 更狠的压缩
brotli 是 gzip 的现代替身,对文本压缩率更高,浏览器普遍支持。
-
TLS 版本与加密套件该怎么选
TLS 1.0/1.1 已不安全,1.3 又快又强。套件选前向安全的 ECDHE,既合规又扛得住嗅探。
-
容器网络:bridge 与 host 怎么选
默认 bridge 下容器各论各的,建自定义网络才能让它们按名字互相发现。
-
数据出境前要想清楚的几件事
涉及个人信息跨境,不是迁个海外服务器就行。先评估性质,再走对应合规路径。
-
无障碍:键盘也能走完全站
键盘能走完全站、读屏能念对,是基本的可访问性。alt、label、aria 是关键。
-
审计日志:出事能回溯
出事后要能回溯是谁、在何时、做了什么。审计日志就是系统的黑匣子。
-
Git hooks:提交前自动拦住脏代码
靠人自觉跑 lint 不靠谱。pre-commit 钩子在提交前自动校验,脏代码出不了门。
-
网站底部该写清哪些信息
合规站点底部不是装饰,要能让人和监管找到你:备案号、主体、联系方式,缺一不可。
-
TTL 设多大?解析生效与回滚的权衡
TTL 是解析结果在各地缓存的存活时间。大则快(命中缓存),小则灵活(随时切换)。
-
docker-compose:一条命令起整套
多容器协作靠 compose 一份文件描述,一条 up 全起来,比手敲一堆 docker run 强太多。
-
ICP 备案那些事:网站合规的三个硬指标
title 含备案名、页脚挂备案号并链接工信部,站点必须可访问——聊聊初审常踩的坑。
-
个人信息保护法下的日志留存
《个人信息保护法》要求最小必要、期限最短。访问日志别无限期留,敏感字段要脱敏。
-
Nginx 多域名虚拟主机配置
一台机器用 server_name 区分多个域名,各自指向不同目录,这就是虚拟主机。
-
磁盘空间告急的排查顺序
磁盘 100% 服务就抽风。先定位分区,再定位目录,最后别忽略「删了但进程还占着」的幽灵文件。
-
备份校验:能恢复才算备份
没验证过的备份等于没备份。真出事才发现备份是坏的,那就晚了。
-
certbot 自动续期:别让证书悄悄过期
免费证书有效期只有 90 天,忘了续期浏览器就会报「不安全」。让 certbot 自己管续期才是正解。
-
cron 定时任务:分钟级到月级的写法
cron 五段式看似简单,字段顺序记错就会在执行时间上翻车。
-
缓存策略:immutable 与 no-cache
文件名带哈希的资源永不变,标 immutable 让浏览器彻底信任;入口 HTML 要每次问源站。
-
Git 工作流实践:从 feature 分支到合并的规范
小团队如何用 feature 分支 + PR 评审保持主干整洁,附提交信息规范。
-
CDN 缓存与回源的那点事
CDN 把内容推到离用户近的节点,命中就快,回源就慢。缓存策略决定何时去源站取新。
-
squash merge:把一堆提交压成一条
功能分支上几十个「调试一下」提交没营养。squash 合并成一条干净记录,主干历史才可读。
-
volume 持久化:数据别随容器没
容器文件系统是易失的,数据库、上传目录必须挂 volume,否则容器一删数据全没。
-
公安备案:别漏掉这一步
很多站长以为拿到 ICP 号就完了,其实还有公安备案。逾期可能被约谈整改。
-
systemd 守护你的后台进程
写个 nohup & 就跑,进程一挂就没人管。systemd 服务单元能自动拉起、记日志、管权限。
-
DNSSEC:给解析加上防伪签名
普通 DNS 回答可能被中间人篡改。DNSSEC 用签名保证你拿到的 IP 确实是权威给出的。
-
预加载:提前排队关键资源
知道接下来一定用的资源,提前告诉浏览器排队下载,消除关键路径上的等待。
-
备案号放哪、怎么链工信部
备案号不是写给自己看的,必须放在网站首页底部并链到工信部,审核员一眼能找到。
-
Nginx 静态资源缓存配置实战
静态资源带哈希文件名可以放心长缓存,而入口 HTML 必须每次校验,否则发版后用户还看旧版。
-
多阶段构建:镜像体积砍一半
多阶段构建让最终镜像只含运行所需,构建工具和源码都不进生产镜像,体积与攻击面双降。
-
PWA:把站点装进主屏
加一份 manifest 再配 service worker,站点就能「装进主屏」,离线也能看缓存页。
-
图片优化:体积砍下来加载才快
图片常占页面大半流量。现代格式 + 响应式 + 尺寸声明,能砍掉一大截加载时间。
-
指标采集:CPU 之外的真信号
CPU 正常不代表服务健康。请求延迟、错误率、队列长度才是真信号。
-
uptime 监控:先知道挂了
监控第一步是「知道挂了」。外部探测比自己报自己更可信,因为自己挂了自己也报不出。
-
密码法视角下的用户口令存储
《密码法》与个人信息保护都要求口令不可逆存储。明文存密码,一旦泄露就是事故。
-
日志驱动:容器 stdout 去哪了
容器日志默认写 json-file,不限制会撑爆磁盘。换驱动或设大小上限才稳。
-
混合内容告警:把 http 资源一并升级
页面是 https,里面却引用了 http 的图片或脚本,浏览器会拦截并报警「混合内容」。升级指令能自动修正。
-
子域名分流到不同服务器
不同业务跑在不同机器或 CDN 上,靠子域 A/CNAME 分流,各自独立扩缩容。
-
Nginx gzip 压缩调优笔记
文本类资源开启 gzip 能砍掉一半以上体积,但图片视频本就压缩过,再压只是浪费 CPU。
-
端口最小化:少开一个少一分险
每个对外开放的端口都是一道门。能不开就不开,数据库管理端口更该锁在内网。
-
reset 三模式:soft/mixed/hard 差别
reset 三兄弟差别只在「改动去哪」。hard 最危险,会连工作区一起删。
-
swap 该开多大?内存不够时的缓冲
内存偶发爆满时,swap 是最后防线:宁可慢一点,也别被 OOM 直接杀进程。
-
ICP 备案流程:从域名到号下来
国内服务器建站,ICP 备案是绕不过的合规门槛。材料齐、信息真,审核通常一两周。
-
镜像瘦身:该删的层都删掉
镜像大不是因为代码多,而是层没管好。合并指令、清缓存、去文档,能砍掉一大截。
-
Nginx 反向代理:从入门到踩坑
反向代理是 Nginx 最常见的用法:把外部请求转给后端应用,对外只暴露 80/443。看似一行 proxy_pass,…
-
资源限制:别让一个容器吃满机
一个容器把 CPU/内存吃满,同机其它容器全被拖死。设上限是基本的邻里责任。
-
SPA 路由兜底:前端路由别 404
单页应用前端路由 /user/123 刷新时,Nginx 找不到文件会 404。兜底回 index.html 让前端接管…
-
一张 SAN 证书托管多个域名
SAN(主题备用名)证书允许一个证书绑定多个域名,省去为每个子域单独申请与部署。
-
Nginx location 匹配优先级详解
location 写错顺序,请求就落到意料之外的块里。理解四种匹配的执行次序,能少掉很多头发。
-
GitHub Actions 自动部署到服务器
push 一下就自动构建上线,比手动 scp 稳。Actions 把构建与部署串成流水线。
-
cherry-pick:只挑那一个提交
只想把某个修复带进另一条分支,不需要合并全部,cherry-pick 精准复制那一个提交。
-
健康检查:让编排知道你活着
容器 running 不等于服务活着。健康检查让编排器知道该不该把流量发给它。
-
OCSP Stapling 降低 TLS 握手延迟
默认情况下浏览器要自己去找 CA 查证书是否吊销,这一步很慢。OCSP Stapling 让服务器把证明夹在握手里。
-
日志聚合:别再一台台登服务器
十台机器逐台登上去 grep,是反模式的。日志集中采集,检索才成为可能。
-
fail2ban:自动封掉暴力破解的 IP
SSH 暴露在公网,爆破脚本昼夜不停。fail2ban 看日志自动封掉反复失败的 IP。
-
meta 标签:被忽略的 SEO 入口
meta 不显示在页面上,却是 SEO 与移动端体验的隐藏入口,description 直接进搜索摘要。
-
SLI/SLO:用数字定义稳定
稳定性不能靠感觉。SLI 量出来,SLO 定目标,错误预算决定你能多激进地发布。
-
告警阈值:太灵敏反而没人看
阈值太灵敏,半夜被叫醒发现是毛刺;太迟钝,事故都结束了才报警。得找平衡点。
-
feature 分支:小团队的主干守护
所有人直接在 main 上提交,冲突和回滚会让你怀疑人生。feature 分支让每条改动独立评审。
-
journalctl 翻日志的常用姿势
systemd 把日志收进 journal,journalctl 是它的检索入口,比 grep 整目录日志快得多。
-
用 Nginx 限流挡住恶意爬虫
突发流量或恶意爬虫把站点打挂,最常见的自救手段就是限流。Nginx 的 limit_req 模块按客户端地址做漏桶限流。
-
Nginx 与上游服务的超时治理
反向代理最怕上游卡死把 Nginx 也拖垮。合理的超时与故障转移,是网关层的自救。