当前位置: 首页 > 编程日记 > 正文

nginx如何解决超长请求串

nginx是一个强大的http服务器,但是在使用过程中发现,当遇到超长post请求或者get请求时,nginx会返回413、400、414等状态码,这是因为请求串长度超过了nginx默认的缓存大小或者请求串大小,那么我们需要怎么样来解决这些问题呢?
针对POST请求,我们可以调整如下两个配置项来解决:
client_body_buffer_size
语法:client_body_buffer_size the_size
默认值:8k/16k
使用字段:http, server, location
这个指令可以指定连接请求使用的缓冲区大小。
如果连接请求超过缓存区指定的值,那么这些请求或部分请求将尝试写入一个临时文件。
默认值为两个内存分页大小值,根据平台的不同,它可能是8k或16k

client_max_body_size
语法:client_max_body_size size
默认值:client_max_body_size 1m
使用字段:http, server, location
这个指令指定允许客户端请求的最大的单个文件字节数,它出现在请求头部的Content-Length字段。
如果请求大于指定的值,客户端将收到一个"Request Entity Too Large" (413)错误。
需要记住,浏览器并不知道怎样显示这个错误。

同时针对post请求还需要注意下面这个参数的配置,如果不打开这个选项当请求串大于client_body_buffer_size大小时,需要手动去读取存储在磁盘的请求,这里需要注意的是存入磁盘的请求是一个完整的请求并不是大于client_body_buffer_size的部分
client_body_in_single_buffer
语法:client_body_in_single_buffer
默认值:off
使用字段:http, server, location这个指令(0.7.58版本)指定将一个完整的连接请求放入缓冲区,当使用$request_body时推荐使用这个指令以减少复制操作。
如果无法将一个请求放入单个缓冲区,将会被放入磁盘。

针对get请求,我们可以通过修改另外两个配置来解决请求串超长的问题:client_header_buffer_size 语法:client_header_buffer_size size 默认值:1k 使用字段:http, server 这个指令指定客户端请求的http头部缓冲区大小绝大多数情况下一个头部请求的大小不会大于1k不过如果有 来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓冲区,这个值可以在 large_client_header_buffers里面设置。 large_client_header_buffers 语法:large_client_header_buffers number size 默认值:large_client_header_buffers 4 4k/8k 使用字段:http, server 指令指定客户端请求的一些比较大的头文件到缓冲区的最大值,如果一个请求的URI大小超过这个值,服务 器将返回一个"Request URI too large" (414),同样,如果一个请求的头部字段大于这个值,服务器 将返回"Bad request" (400)。 缓冲区根据需求的不同是分开的。 默认一个缓冲区大小为操作系统中分页文件大小,通常是4k或8k,如果一个连接请求将状态转换为 keep-alive,这个缓冲区将被释放。

那么有人就会觉得奇怪了,为什么修改http header的大小就能解决get请求串过长的问题呢, 这就要从http协议的get请求说起了,其实GET提交,请求的数据会附在URL之后(
就是把数据放置在 HTTP协议头中)。

大家看到没,其实get请求的参数就是存放在http header中的,所以修改header的大小限制 当然可以解决请求串过长的问题啦。此外还有给大家澄清一点啦,
HTTP协议没有对传输的数据大小进行限 制,HTTP协议规范也没有对URL长度进行限制,我们日常生活中遇到的长度限制都是各个浏览器或者http 请求工具自己干的。

 

转载于:https://www.cnblogs.com/onmyway20xx/p/4469202.html

相关文章:

ubuntu安装qwt出现错误时"mkdir: 无法创建目录“/usr/local/qwt-6.1.3“: 权限不够"

报错: 在root用户下执行操作,参考链接安装qwt

Unity 2021人工智能导论 Introduction to Artificial Intelligence in Unity 2021

学习视频游戏开发中最常用的人工智能技术的基础知识。 你会学到什么 了解如何使用有限状态机 学习行为树的基础知识 了解如何实现阿斯塔寻路算法 了解如何在游戏中实现传感器 了解如何创建GOAP系统 了解植绒的基本知识 流派:电子学习| MP4 |视频:h264,1280720 |音频…

HikariPool 连接池问题

前言:今天在一个项目运行的时候发现一个很奇怪的问题,当我有一段时间无操作之后再进行插入操作的话,就会出现HikariPool相关的报错,在此记录一下 问题 2022-02-20 13:14:04.178 WARN 4012 --- [nio-8888-exec-6] com.zaxxer.hik…

谈谈对web标准的理解

Web标准不是某一个标准,而是由一系列标准组合而成。网页主要由三部分组成:结构、表现和行为。对应的标准也分三方面:结构化标准语言主要包括XHTML和HTML以及XML,表现标准语言主要包括CSS,行为标准主要包括对象模型&…

2022-2028年中国二次供水设备行业研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国二次供水设备行业市场行业相关概述、中国二次供水设备行业市场行业运行环境、分析了中国二…

linux磁盘配额管理

linux-用户磁盘配额磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服…

终端打不开(右键和快捷键)?因为phthon?

参考连接:https://www.cnblogs.com/dolphi/p/3622570.html 在总的环境变量中删除掉LC_ALL这一项,重新启动后即可恢复以及打开终端; 具体怎么操作:是师兄帮弄的,没看清楚怎么操作!

Unity从头到尾无代码游戏制作学习教程

制作没有代码的游戏 Unity中的主视觉脚本! 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,48.0 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小解压后:26.2 GB 含课程文件|时长:21小时 11分…

经常使用ARM汇编指令

一面学习,一面总结,一面记录。 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅。 ARM处理器的指令集能够分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、载入/存储指令、协处理…

解决 Could not autowire. No beans of ‘UserDao‘ type found 问题

前言:今天在完善项目的时候发现使用Autowired注入的Dao层依赖出现报错,但是不影响项目的运行,在此记录一下 问题 这个错误不影响项目运行,但是它看着很烦… 分析 Dao层代码: Mapper public interface UserDao {User…

2022-2028年中国二次供水产业发展动态及投资战略规划报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国二次供水行业市场行业相关概述、中国二次供水行业市场行业运行环境、分析了中国二次供水行…

Tomcat安全

一、版本安全 升级当前的tomcat版本为最新稳定版本。故名思议,最新稳定版本就要兼顾最新和稳定这两个概念。一个稳定的版本,是需要时间沉淀的,而最新又是相对于稳定版而言的最新。因此我们一般会选择当前大版本中,最新版本往前推几…

Linux系统下给Qt应用程序配置图标(其余的应用程序也是可以实现添加图标的)

添加链接描述1.创建启动脚本 打开终端输入: touch run.sh在/home目录下找到run.sh文件,双击打开编辑; #!/bin/bash cd /execute/home/xxx/ #/home/xxx/是Release编译以后生成的应用程序的路径 ./Json2.创建d…

Unity完全学习教程-从初学者到C#中的RPG游戏开发

打造3款游戏&学习Unity实用方式!从基础开始,以一个RPG游戏结束。使用Unity 2020和C# 你会学到: 通过创建酷游戏的实用方法 游戏开发的基础和核心概念 创建一个拥有大量功能的角色扮演游戏 代码背后的数学解释。 要求 最基本的C#或其他面向对象语言…

2345电脑管家_极限挑战:同时安装4大国产杀毒软件,我的电脑是最安全的?

还没到国庆假期,老毛桃就提前给自己放了假,闲着就作妖,这不?现在就忙着卸载。人固有一秃,或秃于科研,或秃于卸载!说到作妖,是怎么一回事呢?此前不少网友私信让老毛桃挑战…

Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)

一、Sublime Text 3 下载。 官方下载地址:http://www.sublimetext.com/ 二、Sublime Text 3 安装。 打开安装包,进行傻瓜式安装。 三、注册。 点击Help,选择Enter License,出现如下输入框。 输入注册码。 —– BEGIN LICENSE —–…

2022-2028年中国儿童医疗行业深度调研及投资前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国儿童医疗行业市场行业相关概述、中国儿童医疗行业市场行业运行环境、分析了中国儿童医疗行…

使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)

简述: 结合Spring和Hibernate进行开发 使用Autowired实现依赖注入, 实现一个学生注册的功能,做一个技术原型 从DAO(Repository) -> Service -> Controller 目录结构: 使用Maven做本地包管理, pom.xml [java]view…

Ubuntu安装QT后无法输入中文怎么办?

文件目录打开: 文件位置/Qt5.12.6/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts 查看是否存在libfcitxplatforminputcontextplugin.so库文件(第一次装肯定没有)放进去以后重新启动QT即可输入中文该库下载位置: ununtu…

Unity空间射击游戏开发教程

描述 在本课程中,您将学习如何在unity中制作一款太空射击游戏。本课程使用全新的特性和编码实践,并且兼容所有较新版本的unity。 了解如何使用世界领先的免费游戏开发工具Unity创建太空射击游戏。有了我们的在线教程,你会惊讶于创建这样一个…

43.放苹果(递归练习)

放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同…

怎么彻底删除电脑上的软件_你的电脑有救了:1 个神器几个进阶方法彻底删除流氓软件!...

如何彻底删除流氓软件?https://www.zhihu.com/video/1064189630747844608流氓软件不仅会拖慢电脑的运行速度,还有各种烦人的广告和弹窗。哪怕你通过常规方式把它卸载掉了,它依然会卷土重来。因为一般的卸载可能会有文件残留,如何彻…

2022-2028年中国儿童保健品行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国儿童保健品行业市场行业相关概述、中国儿童保健品行业市场行业运行环境、分析了中国儿童保…

构造 Codeforces Round #302 (Div. 2) B Sea and Islands

题目传送门 1 /*2 题意:在n^n的海洋里是否有k块陆地3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S4 输出完k个L后,之后全部输出S:)5 5 10 的例子可以是这样的&#xff…

QGC开发(一)---编译构建源码

编译构建源码编译信息下载QGC源码编译与构建编译信息 系 统:Ubuntu 16.04 QT 版 本:QT5.12.6 QGC版本:Stable_3.5.6下载QGC源码 下载连接: git clone https://github.com.cnpmjs.org/mavlink/qgroundcontrol.git -b St…

Unity 3D游戏开发学习教程

用C#用Unity3D制作游戏 你会学到: 您将学习3D游戏开发基础知识,以使用Unity3D引擎推进事物。 到本课程结束时,他们将可以轻松制作任何类型的游戏,无论是3D还是2D MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz&#xf…

iphone照片永久删除怎么恢复_怎么恢复删除的照片?专业数据恢复软件轻松搞定...

怎么恢复删除的照片?照片相信对大家来说也都并不陌生,不管是旅游还是聚会,很多人往往也都会随手一拍,并将这些照片作为留恋。所以现在的生活中,用于拍照的设备也都越来越多,同时很多人对于所拍照片的清晰度…

知识点回顾-简单的TableView单组数据展示/多组数据展示

1 拖入TableView到UIView中,连线DataSource2 3 1.实现数据源方法4 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section5 {6 return ;7 }8 9 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSI…

2022-2028年中国多肽药物市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国多肽药物行业市场行业相关概述、中国多肽药物行业市场行业运行环境、分析了中国多肽药物行…

第一次写,测试下

2015年5月11日转载于:https://blog.51cto.com/tdfly/1650342