个人博客上线后,我又处理了防爬、静态资源和发文问题

预计阅读时间:9 分钟

这是「把自己部署到互联网上」系列的第 35 篇。

上一篇写了 Navicat 如何连接 Docker 里的数据库。

那是博客上线后的维护问题:数据库不能直接暴露公网,但我又需要安全、方便地查看和排查数据。

到这里,博客已经不只是“部署起来”,而是进入上线后的真实使用阶段。

部署前与上线后的心理变化

部署前,我主要关心容器能不能启动,Nginx 能不能代理,HTTPS 能不能访问,数据库能不能连接,管理员能不能创建。

真正上线后,问题变得更加具体:

  • 访问日志出现异常请求
  • 爬虫和扫描开始访问博客
  • 静态资源加载失败
  • 对象存储图片路径要调整
  • HTTPS 下出现混合内容
  • 后台发文流程也没有想象中顺手

博客没上线时,很多问题只是设想。上线后,浏览器会告诉你资源有没有加载失败,Nginx 日志会告诉你有没有异常请求,后台会暴露发文流程是否顺手,对象存储会验证权限配置是否正确,数据库会证明数据是否真的写进去。

下面列举几个具体的例子

常见的问题

1. 访问日志里出现异常请求

博客上线后,查看 Nginx 访问日志。

全局 Nginx容器是公网入口,外部请求都会先经过它。

可以查看容器日志:

docker logs global-nginx

日志挂载到宿主机,也可以看宿主机日志:

tail -f /opt/coduty/nginx/logs/blog.access.log

很快就会发现,日志里不只有正常用户请求,还可能存在以下几种访问日志:

  • 访问不存在路径
  • 常见后台入口路径
  • 漏洞路径
  • 异常 User-Agent
  • 短时间内大量请求访问

这和之前服务器 SSH 端口一直被扫描类似,只是这次扫描对象变成了 Web 入口。

看到这里先不要紧张,要先分清:有异常请求,不等于被攻破,但也不能无视它。

这就说明博客已经进入公网环境,访问入口需要基本抗暴力破解能力。

2. 防爬不能一上来做得过重

看到异常请求后,很容易想立刻封 IP、加验证码、配 WAF、限制 User-Agent、做频率控制。

上面的操作,对非博客类项目,完全可以起到防护作用。但博客项目本来就希望被搜索引擎索引,被读者访问,被别人分享。如果防守得太严密,可能误伤正常访问。

现阶段的思路是:让子弹飞一会儿,先观察,再限制明显异常。

具体包括:

  • 看访问日志,知道哪些路径被频繁访问
  • 保护后台入口,使用超长后台路由,让登录和管理页面比普通文章页更谨慎
  • 对短时间大量请求做限速或封禁
  • 不要把数据库管理工具、调试页面、环境信息页面挂到公网

不要为了防爬影响正常阅读,这就有点本末倒置了,防爬不是越狠越好,力度要刚刚好。

3. 静态资源加载失败

打开博客列表或文章详情页面时,会发现图片、字体和一些 CSS 样式错乱。

出现这几种现象的原因:

  • CSS 样式没加载
  • JS 报错
  • 图片 404
  • 后台样式丢失
  • 上传图片无法显示
  • 字体资源失败

打开浏览器开发者工具的 Network 面板。

  • 404 通常是路径不对
  • 403 可能是权限问题
  • 500 是服务端异常
  • Mixed Content 表示 HTTPS 页面加载了 HTTP 资源
  • 然后再看 Nginx 日志、应用日志和对象存储配置

字体包很容易遗漏,开发环境字体包比较多,部署到线上之后,发现缺少字体,导致图片水印显示“口口口”

图片资源放在对象存储,要检查桶策略、自定义域名、CORS、防盗链和 HTTPS。

很多静态资源问题不是文件不存在,而是访问 URL 拼错了,比如:多了斜杠、少了前缀、域名写错、配置了 SSL 证书,访问协议仍用的是 HTTP。

4. 后台发文流程不顺

博客(楸木笔记)上线后,当开始发文章的时候,才会发现后台也需要打磨

  • 图片怎么上传
  • 封面、布局放哪里
  • Markdown 是否支持
  • 代码块显示是否正常
  • 分类和标签怎么设计
  • 草稿、预览、发布流程是否顺
  • 公众号文章和博客文章怎么同步
  • 文章发布后 URL 是否稳定

这些问题不是部署阶段能完全解决的问题。

三分写,七分改,一步步迭代优化

先说下初步的几个原则:

  1. 文章 URL 要稳定,不要频繁删除文章
  2. 图片路径按文章组织,不一股脑的堆在一个文件夹下面
  3. 文章结构要适合博客和公众号二次分发
  4. 代码块要可读
  5. 发布前要预览并审核图片、链接、代码块和表格
  6. 发布后看日志,确认资源没有 404,Nginx 没有异常错误

梳理一个简单排查表,希望能给大家带来一种思路

问题 检查方式 处理思路
异常访问 Nginx 访问日志 先观察,再限制明显异常
后台风险 登录日志、访问路径 强密码、HTTPS、必要访问限制
CSS/JS 失败 浏览器 Network 检查静态资源路径和 Nginx 配置
图片 404 Network、对象存储 检查资源路径、桶权限、域名
混合内容 浏览器控制台 所有资源统一 HTTPS
发文不顺 后台流程 优化 Markdown、图片、分类、预览
数据异常 数据库和应用日志 检查迁移、写入、权限
服务异常 Docker logs 先看日志再改配置

小结:

总结一下,个人博客上线后,问题从“能不能部署”变成“能不能稳定使用”。页面能打开还不够,资源要正常,后台要可用,文章要能发,日志要能看,异常要能发现,路径要能长期维护。

下一篇做一次阶段复盘:个人博客上线后,我踩过的几个真实坑。那篇会把这段博客部署和上线后的问题重新整理一下,为后面从博客走向个人品牌官网做准备。


本文由 楸木 原创,转载请注明出处。

这篇文章暂未开放评论。

相关推荐

发现更多