解决 PHP 使用 header 函数 location 跳转的一个导致502的坑

善良单纯的小阿板
创建时间: 2018年4月23日 庆丰六年
最后编辑: 2018年4月23日 6 年前
情景是自己写了一个短网址跳转,网址内容的长度大约是3k-5k字符左右,nginx 会偶发性的502,查 log 发现,
[error] 1704#1704: *115579 upstream sent too big header while reading response header from upstream

因为是多层缩短,nginx 做了一次 rewrite,然后 php 直接用 header 返回 location,所以会导致在返回的最外层的 cgi (处理)的时候导致 http header 长于默认的4k.

解决方法 http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffer_size

增大 fastcgi_buffer_size。值得一提需要小心的是,这项配置依赖于 fastcgi_buffers,前者不能小于后者。