请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,header请求体过大,nginx如何正确的去配置?

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这块没有很深的去了解,直到今天碰到了这个情况才想起来的,所以希望老师能够稍微的讲解一下

谢谢老师

正在回答 回答被采纳积分+3

1回答

Jeson 2019-04-28 19:49:04

这个问题你要了解的有:

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倍)


0 回复 有任何疑惑可以回复我~
  • 提问者 ericdemon #1
    老师,
    那如果前端工程师通过ajax携带参数请求后端接口时,那么这个参数是存放在proxy_buffers的缓冲区里吗?
    而后端响应了ajax的请求,返回的数据是存放在 proxy_buffer_size由缓冲区里吗?
    回复 有任何疑惑可以回复我~ 2019-05-10 12:26:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信