月度归档:2026年9月 (54)
聊聊代码评审这件小事
Code Review 不是挑毛病,是团队知识传递的最佳渠道。这篇分享我做 CR 的三条原则和五个常见坏味道。
Nginx 收官:大门之上的全景图
十五篇走完,每个配置背后都是明确的取舍:静态要快、代理要稳、限流要狠、切换要静。收官篇串起全景地图,附一份生产检查清单和排错速查表。
高可用:Keepalived 让 Nginx 自己不成为单点
Nginx 扛得住十万流量,但 Nginx 那台机器挂了就是全线故障。Keepalived 用 VIP 漂移做主备切换——配一个健康检查脚本,把"大门"变成双保险。
性能调优:先把连接模型搞对,再谈参数
worker 数等于核数、每 worker 数万连接、upstream 长连接复用——这三件事做对,Nginx 已经是高性能姿态。sendfile 与缓冲区是锦上添花,压测对比才能证明收益。
日志与排错:access_log 是最诚实的眼睛
默认日志只有地址和状态码,加上 request_time 与 upstream_response_time,慢在哪一段一目了然。403、404、502 各有固定剧本,照单抓药比瞎猜快得多。
WebSocket 代理:Upgrade 头不传,连接必断
WebSocket 靠 HTTP Upgrade 握手升级而来——Nginx 默认不透传升级头,前端表现就是"每隔一分钟掉线重连"。两行配置加一个 map,长连接才算真正打通。
rewrite 与重定向:last、break、permanent 别再混用
rewrite 的四个 flag 是四种结束方式:last 换个 location 重来,break 原地收工,redirect 发 302,permanent 发 301。if 能不用就不用,return 往往更干净。
HTTPS:从证书配置到 HTTP/2 的完整落地
证书链配对、TLS 版本、跳转环路——HTTPS 的坑集中在头三行配置。HTTP/2 只需一个词,首屏速度立竿见影;Letu0027s Encrypt 加 certbot,证书这件事可以全自动。
Nginx 限流:把洪峰挡在大门之外
limit_req 是令牌桶的教科书实现:rate 定速率,burst 定容量,nodelay 决定突发是排队还是拒绝。应用层限流之前,先让大门把明显的洪水拦下。