老师,header请求体过大,nginx如何正确的去配置?
来源:1-1 课程介绍
ericdemon
2019-04-26
1、错误日志:
upstream sent too big header while reading response header from upstream,
2、网上的说法:
请求体携带的参数过大,因为默认是最大1K
3、网上的解决办法:
在location下面多增加
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
疑问:
老师,这三个参数分别是什么意思 , 因为这门课程之前买的时候比较早了,然后本身在后端开发的时候对nginx这块没有很深的去了解,直到今天碰到了这个情况才想起来的,所以希望老师能够稍微的讲解一下
谢谢老师
1回答
-
Jeson
2019-04-28
这个问题你要了解的有:
1、proxy_buffering这个参数用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。所以需要开起。
2、proxy_buffers的缓冲区大小一般会设置的比较大,以应付大网页。 proxy_buffers当中单个缓冲区的大小是由系统的内存页面大小决定的,Linux系统中一般为4k。 proxy_buffers由缓冲区数量和缓冲区大小组成的。总的大小为number*size。
3、后端服务器的相应头会放到proxy_buffer_size当中,这个大小默认等于proxy_buffers当中的设置单个缓冲区的大小。所以这个问题,这个数值需要调大很关键!
4、proxy_busy_buffers_size不是独立的空间,他是proxy_buffers和proxy_buffer_size的一部分。nginx会在没有完全读完后端响应的时候就开始向客户端传送数据,所以它会划出一部分缓冲区来专门向客户端传送数据(这部分的大小是由proxy_busy_buffers_size来控制的,建议为proxy_buffers中单个缓冲区大小的2倍)
012019-05-10
相似问题