244 字
1 分钟
记一次 nginx upstream 调优:buffer 太小引起的 502
前两天一个反代服务开始间歇性 502,有意思的是重启之后好一阵子,然后又冒出来,频率不高但很烦。打开 error.log 一看,关键行是:
upstream sent too big header while reading response header from upstream原因
上游是一个走 Akamai 的站点,响应头里塞了一大串 set-cookie。nginx 默认的 proxy_buffer_size 只有 4k(新版本是 8k),响应头一旦超了就直接掐断,客户端看到的就是 502。
修复
proxy_buffer_size 16k;proxy_buffers 8 16k;改完 reload,观察了两天没再出现。顺手还把 proxy_connect_timeout 和 proxy_read_timeout 收紧了一点,免得上游抽风时 worker 被拖死。
一点感想
这类参数默认值在小流量场景完全够用,所以平时根本注意不到。等上游换了 CDN 或者开始发大 cookie 的时候就突然爆雷,而且日志里的关键字和”网关挂了”的第一直觉完全对不上,容易往错误方向查。
记一次 nginx upstream 调优:buffer 太小引起的 502
https://oliver6868686.tech/posts/nginx-502-buffer/