运营反馈 Nginx 报 400 错误,具体点说:Request Header Or Cookie Too Large。其实随便搜搜就知道可以通过加大 client_header_buffer_size 和 large_client_header_buffers 来解决问题,不过这里面有一些细节值得讨论,正所谓:知其然,知其所以然。

首先,让我们想想为何 Nginx 不能用一个指令来搞定问题,而要用两个指令?为了搞清楚这个问题,我们不妨先看看官方文档的描述:

  • client_header_buffer_size: Sets buffer size for reading client request header. For most requests, a buffer of 1K bytes is enough. However, if a request includes long cookies, or comes from a WAP client, it may not fit into 1K. If a request line or a request header field does not fit into this buffer then larger buffers, configured by the large_client_header_buffers directive, are allocated.
  • large_client_header_buffers: Sets the maximum number and size of buffers used for reading large client request header. A request line cannot exceed the size of one buffer, or the 414 (Request-URI Too Large) error is returned to the client. A request header field cannot exceed the size of one buffer as well, or the 400 (Bad Request) error is returned to the client. Buffers are allocated only on demand. By default, the buffer size is equal to 8K bytes. If after the end of request processing a connection is transitioned into the keep-alive state, these buffers are released.

大概意思是说 Nginx 使用 client_header_buffer_size 缓存客户端的请求头,一旦空间不够了,就通过 large_client_header_buffers 按需扩容。这样做可以平衡资源和性能。

比如说大部分请求头的大小在 2K 以内,小部分的请求头在 10K 左右,此时理论上我们可以通过调整 client_header_buffer_size 到 10K 来解决问题,不过这样的话无疑浪费了宝贵的内存,更好的方法是调整 client_header_buffer_size 到 2K 满足大部分请求头的需求,至于小部分 10K 的请求头,则通过调整 large_client_header_buffers 来满足。

其次,让我们看看如何了解请求头的情况,这里试试一个名为 ngrep 的小工具:

ngrep

下面是我秀 awk 的时刻了,比如统计一下请求头都有多长:

shell> ngrep -W byline 'GET /' 'tcp and dst port 80' |awk -v RS="#+" -v FS="\n" '{ print length() }'

再比如查询一下大于 1K 的请求头:

shell> ngrep -W byline 'GET /' 'tcp and dst port 80' |awk -v RS="#+" -v FS="\n" 'length() > 1000'

转载于:https://www.cnblogs.com/lcword/p/8098402.html

Request Header Or Cookie Too Large相关推荐

  1. php client_header_buffer_size,网页出现400 Bad Request Request Header Or Cookie Too Large错误的解决方法...

    在开发项目过程中,突然遇到400 Bad Request Request Header Or Cookie Too Large的报错,我也是第一次出现这样的错误,感觉还是挺新奇的. 分析下出现错误的原 ...

  2. 400 Bad Request Request Header Or Cookie Too Large

    nginx配置反向代理或跳转出现400问题处理记录

  3. 服务器返回431 Request Header Fields Too Large解决方法

    访问服务器,出现这个问题 431 Request Header Fields Too Large 解决:清空浏览器的cookie缓存重新加载. 或者在nginx的HTTP模块中,修改 client_h ...

  4. 遇到Request header is too large,你们是如何解决的?

    今天看到群里有小伙伴问,这个异常要怎么解决: java.lang.IllegalArgumentException: Request header is too large 异常原因 根据Except ...

  5. java.lang.IllegalArgumentException: Request header is too large

    tomcat运行项目时,有一个请求过去后,后台报这样的错java.lang.IllegalArgumentException: Request header is too large 原因:请求头超过 ...

  6. java.lang.IllegalArgumentException: Request header is too large 解决方案

    ava.lang.IllegalArgumentException: Request header is too large 问题分析: 请求头超过了tomcat的限值.本来post请求是没有参数大小 ...

  7. java.lang.IllegalArgumentException: Request header is too large的解决方法

    java.lang.IllegalArgumentException: Request header is too large的解决方法 参考文章: (1)java.lang.IllegalArgum ...

  8. 关于Http请求中 Status code: 431 Request Header Fields Too Large 的问题处理

    最近做项目,遇到一个问题,后台导出表格时,当条数超过一定数量时,会报:431 Request Header Fields Too Large的问题,然后就在网上搜索这个问题,本质的问题就是http请求 ...

  9. Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors

    tomcat进行http request解析的时候报错,并将错误返回给客户端了,具体的错误如下:org.apache.coyote.http11.AbstractHttp11Processor.pro ...

最新文章

  1. Microservice 微服务的理论模型和现实路径
  2. 通过PXE服务器批量安装系统
  3. Python IDLE入门
  4. VS Resharper快捷键没了处理办法
  5. Serv-U服务器的管理3
  6. 支持向量机-SVM-最优化公式推导记录
  7. STM8单片机ADC单次采样模式
  8. 【原创】基于Qt5.14的一站式安卓开发环境搭建
  9. 甲骨文裁员900多人,赔偿N+6,有人获赔100万,被裁也能致富?
  10. 报错 SocketTimeoutException: null
  11. java 群发邮件_java群发邮件
  12. 十年互联网 十个风云人物
  13. 《C++高级进阶》读书笔记 第一章 C++基础知识
  14. GROMACS .mdp 选项翻译及笔记
  15. win10下装win7双系统_win10下怎么装win8系统 win10下装win8系统方法【详细教程】
  16. Gephi安装教程——1
  17. 旋转正方体加径向渐变
  18. ADSL后台初始密码大全
  19. Gitlab和AD账号集成,账号登录时报错:Invalid credentials
  20. 玩转Python的黑魔法手册

热门文章

  1. shiro 删除用户session_我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录)...
  2. 锁住文件linux,linux新手教程之创建锁文件的方法
  3. ip访问 webstorem_常见问题-iOS WebView IP直连 如何处理 Cookie
  4. (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询
  5. expect批量执行命令
  6. c库函数tmpfile
  7. tcpdump源码分析——抓包原理
  8. 一文带你马上清楚bootstrap的栅格系统
  9. resnet18到resnet152模型pytorch实现
  10. Hadoop2.4.1入门实例:MaxTemperature