2
0
0
Nginx 反代和证书,我把整条链路理了一遍
文章摘要
|
这段时间我服务器上的 HTTPS 一直有点小问题,我就下决心把「一次请求到底经过了哪些环节」彻底理清楚。理完发现,我以前很多操作都是知其然不知其所以然。这篇把我理的链路和踩过的坑记下来。
一次请求都发生了什么

图 1:一次请求的完整链路
我原来以为最复杂的是后端服务,理完才发现,Nginx 这一层才是关键:HTTPS 在这里结束,后面的流量走内网 http;证书、跳转、压缩、缓存头也都在这一层做。
反向代理我是怎么写的
我的配置核心就三件事:
- 把域名(443)接进来,指向证书
- 把请求转发到本机服务端口
- 把真实访问者的 IP 和协议头带上,否则服务里看到的全是 127.0.0.1
有一点我踩过:代理的时候如果没带对头部,网站里生成的所有链接都会变成 http,浏览器就会提示「不安全」。这个坑我排查了一晚上,最后发现只是配置里少了一行。
证书不是装一次就完了
这是我最想强调的一点。证书有有效期,到期不续,网站直接打不开。

图 2:证书自动续期的流程
我现在的做法是:写好定时任务,让它自己检查、自己申请、成功后自己重载。这样我不用天天记着「什么时候该续证」。
我踩过的两个坑
- 改完配置没验证就重启。有一次配置写错了,Nginx 直接起不来,网站全挂。后来我养成习惯:先用 nginx -t 检查语法,通过了再平滑重载。
- 续期任务没生效。我一开始以为配了定时任务就万事大吉,后来核对时才发现有一条根本没跑起来。现在我每隔一段时间会手动核一遍证书有效期。
我的结论
理链路这件事看起来像「多此一举」,但实际上:
- 出问题的时候,你能立刻知道该去查哪一层
- 做优化的时候,你知道改哪个环节最有效
- 跟别人描述问题的时候,你能说清是「从哪到哪不通」
如果你也在自己维护服务器,我建议花一个晚上把这张图画出来。画完你会对整台机器有完全不一样的理解。

