这个博客在四年前做了一次迁移1,目前是架设在一台 DigitalOcean 的 VPS 上,前面用 Cloudflare 作 CDN,得益于我选择的这两家公司非常靠谱(但是最近 Cloudflare 的事故2 3让我这个 CF 吹有一些尴尬),自从搭建起来之后,我几乎没有维护过。

最近后台一直提示我 PHP7.4 EOL 了,今天终于打起精神来决定升级一把。
一不做而不休,干脆直接把 4 年半前启动的这台 VPS 全升了吧:
- Ubuntu 升级到 24.04;
- Mysql 升级到 8.0;
- PHP 升级到 8.3;
因为我是专业的 SRE,所以这次升级读者感受不到任何区别。
整体比较顺利,唯一遇到的问题是,我用的 wordpress theme 太老了,一样的代码居然在 PHP8.3 挂了。看提示是函数参数少传了,在 PHP7.4 是 Warning,在 PHP8.4 是直接 Fatal。
本来打算放弃治疗,直接用一个新的 wordpress 官方主题得了,省心。结果一个二〇二五这些主题,都是什么玩意,行距看着都难受。又回来决定修好主题的代码。得亏 ChatGPT,没想到意外地顺利,很快就跑起来了,目前也没发现什么问题。
安全方面上顺便做了一个加强,以前的架构是:域名解析到 Cloudflare,Cloudflare proxy 到我的 Nginx,Nginx 只接受 Cloudflare 的 IP4,其他的一概拒绝。自己以为很安全了,没有人知道我的真实 IP。然后自己一查,居然早已经暴露了。

我也不知道什么时候暴露的。
这次直接用了 cloudflared,原理是,我的服务器 Nginx 只 listen localhost 的端口,我的服务器安装一个 cloudflared,cloudflared 会去主动连接 cloudflare,这样,在 cloudflare 收到请求的时候,会通过 –> cloudflared –> nginx 转发到我的机器上。有点像 FRP5 穿透。如此一来,我的 IP 完全没有暴露在公网上了。过段时间再去搜索一下,看暴露了没有。
欢迎读者留言 ; D
- 博客迁移到 Cloudflare ↩︎
- Cloudflare outage on November 18, 2025 ↩︎
- Cloudflare outage on December 5, 2025 ↩︎
- Cloudflare 的 IP range:https://www.cloudflare.com/ips/ ↩︎
- https://github.com/fatedier/frp ↩︎
看了这一篇文章吓得我也去查了一下censys的结果,发现ip不对,并且只是查询出来了系统是liunx的我就放心了,很好不是像你一样显示出来了Ubuntu Linux 20.04 以及ip信息,并且还有一点你应该修改一下head头中的meta->generator,很明显就知道是WordPress 6.9的版本了,如果人家知道这个版本的漏洞就出大问题了。看了一下你的原理,之前我为了不暴露ip,是通过一台ADSL服务器的nginx转发到另外一台waf服务器的nginx再转发机器上的nginx上,如果waf或者web两个中的一个服务器检测到攻击就直接拉黑拦截,到期才解封,如果突然之间一堆攻击就拉黑拦截,并通知ADSL服务器进行换ip。唯一点问题就是dns传播需要10分钟,切换ip地址池的时候会影响一下正常的用户
这个级别太高了,我不想花这么多精力维护。现在策略是定期备份,不怕被攻破,没有敏感数据的。如果有问题我就换一台 VM 再搭建一次。
至于 wordpress,我觉的问题不大。隐藏自己的版本不彻底解决漏洞问题,我是直接跟着官方的 wordpress 版本升级的。
>因为我是专业的 SRE,所以这次升级读者感受不到任何区别。
牛逼就完事了。
用 cloudflared 会影响 certbot 自动申请证书吗
应该不会,cloudflared 只是帮你代理单个服务,其他的东西该怎样还是怎样的。
不过都用 cloudflare 了,直接让 cloudflare 负责证书不就好了吗?
都用 tunnel 了,是不是可以直接把博客放家里了。
理论上是,但是家庭里没有稳定的网和电,没有连续让我的主机开机 5 年的条件。
可能是IP反向解析记录暴露的:
$ host 157.230.246.87
87.246.230.157.in-addr.arpa domain name pointer kawabangga.com.
哈哈,还真是,我 trace 了一下是 DO 来解析的。
然后看了文档 https://docs.digitalocean.com/products/networking/dns/how-to/manage-records/#ptr-rdns-records :
> We automatically create PTR records for Droplets based on the name you give that Droplet in the control panel. The name must be a valid FQDN. For example, using example.com as the Droplet name creates a PTR record, but ubuntu-s-4vcpu-8gb-fra1-01 or my-droplet does not. Droplets with IPv6 enabled only have PTR records enabled for the first IPv6 address assigned to it, not to all 16 addresses available.
评论头像挂了
没有挂吧,头像是用的 gravatar,是不是访问 gravatar 有问题?
https://secure.gravatar.com/avatar/dce3afe494335c376900b216bea65299cae40115ea442d21d0ce1e474c32b86a
一千六百多天没重启对于SRE其实有点不应该。。。要review下为什么没有打regular patch了哈哈。
是啊,不过不是恰恰说明它稳定嘛,要是跑的好好的,就不要去动它了~