跳到正文
一个请求的七层旅程:把我会的技术串成一套系统
一个请求的七层旅程:把我会的技术串成一套系统

一个请求的七层旅程:把我会的技术串成一套系统

学过的技术像拼图。这篇把它们串成一张图:一个请求从浏览器到数据库再回来,经过的每一层都是亲手搭过的。串起来之后,对「系统」的理解变了什么,出了问题又该从哪层查起。

速读#

这篇把 Git、Docker、Nginx、Cloudflare、后端和数据库放回一条请求链路里看。读它不是为了学新命令,而是把“我会一堆技术”改成“我知道每层在系统里站哪”——排障时能按层收缩范围,也诚实标出还没亲手做过的缺口。

请求经过的每一层#

用户访问 https://s1oop.bbroot.com/2026/06/hello

做了什么用到的技术
DNS域名 → CF 边缘 IP,非源站真实 IPCloudflare DNS可达
CF 边缘SSL、WAF、缓存判断Cloudflare防护
Tunnelcloudflared 出站,源站零入站Cloudflare Tunnel可达
Nginx按域名分发,传转发头Nginx 反代可达 / 防护
后端业务处理FastAPI / Spring Boot
数据库落库SQLite / MySQL数据
返回原路 HTTPS 回用户HTTPS 证书链防护
Terminal window
dig s1oop.bbroot.com +short # 常见返回 CF 边缘 IP

串起来之后:按「面」想,不按「技术」想#

可达: DNS 藏真实 IP,Tunnel 把入站翻成出站,Nginx 在最内侧按域名分发——从外到内一层比一层收紧。 防护: WAF 在边缘挡通用攻击,ufw 和 fail2ban 在主机挡端口和暴力尝试,HTTPS 在传输层挡窃听——分层各挡一类,谁也替不了谁。 可观测: 不出现在链路图上,却盯着整张图——哪吒看整机指标,journalctl 看单个服务的死因。 守护: 也不在链路上,但链路上每个进程活着都靠它——systemd 把「崩了」变成「崩过」。

加新服务时,顺序反过来了:先过可达 / 防护 / 守护 / 可观测,再动手部署——不再「先装再说」。

这张图最大的用处:排障时按层收缩#

「网站打不开」不是一个问题,是七个可能的问题。有了这张图,排查从瞎猜变成按层收缩:

检查命令 / 动作排除哪层
域名还解析吗dig 域名 +shortDNS
边缘有响应吗curl -I https://域名,看返回头CF 边缘
隧道还连着吗systemctl status cloudflaredTunnel
源站服务活着吗服务器上 curl 127.0.0.1:端口Nginx / 后端
进程为什么死的journalctl -u 服务名 -e后端 / 数据库

从两端往中间夹:外侧 dig/curl 验证公网视角,内侧回环 curl 验证服务本体,问题一定卡在两个「通」之间的那层。不懂链路时,每次故障都是全新恐慌;懂了之后,故障只是二分查找。

还有一个前提容易被跳过:CF 缓存命中时,请求根本不会到源站。排障前先看响应头里的 cf-cache-status,确认这次请求真的回源了——否则你会在源站日志里,等一个永远不会出现的请求。

诚实缺口:负载均衡与水平扩展#

这张图大部分串通了,真正的负载均衡和水平扩展还没亲手做过——仍是单机。对大厂架构做过纸上对照,但纸上得来的不算数。

缺口标出来,不假装通了。

这篇不是新知识,是组织方式变了:同样的零件,按系统看 vs 按知识点看,深度完全不同。

版权许可

CC BY-NC-SA 4.0 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

相关文章

s1oopX

登录 s1oopX