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

上传大文件,出现: 413 request Entity too Large错误的解决办法

工作中遇见了一个问题,就是上传一个100M的文件,会报413 request Entity too Large错误,下面给出解决方式。

经过排查,发现服务器使用nginx作为反向代理服务器,报上名错误,是因为请求长度超过了nginx默认的缓存大小和最大客户端最大请求大小。

经过网上搜索,找的了分别针对post和get方式的解决办法

针对post

针对post请求解决办法: 
修改nginx.conf里面的几个相关的配置参数 
client_body_buffer_size 10m(配置请求体缓存区大小, 不配的话) 
client_max_body_size 20m(设置客户端请求体最大值) 
client_body_temp_path /data/temp (设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中,注意临时路径要有写入权限) 
如果上传文件大小超过client_max_body_size时,会报413 entity too large的错误。 

针对get

针对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请求串过长的问题?因为get请求参数会拼在http header中,所以,修改了http header的大小,就能解决上面问题。

Nginx 400错误:HTTP头/Cookie过大

nginx400错误是由于request header过大,通常是由于cookie中写入了较长的字符串所引起的。
解决方法是不要在cookie里记录过多数据,如果实在需要的话可以考虑调整在nginx.conf中的client_header_buffer_size(默认1k)
若cookie太大,可能还需要调整large_client_header_buffers(默认4k),该参数说明如下:
请求行如果超过buffer,就会报HTTP 414错误(URI Too Long)
nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报400的HTTP错误(Bad Request)。



相关文章:

Java中的策略模式实例教程

策略模式是一种行为模式。用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略。 策略模式也被称作政策模式。实现过程为,首先定义不同的算法策略,然后客户端把算法策略作为它的一个参数。使…

struts 2 结合json

struts 2 结合json 在struts 2中&#xff0c;要结合json的话&#xff0c;其实是不错的选择&#xff0c;最近做一个登陆系统时&#xff0c;可以考虑选择用struts 2结合json,下面是要点register页面<s:form action"Regist.action"> <s:textfield id"u…

什么是遗传算法?

本文从遗传算法的生物学基础讲起&#xff0c;详细介绍了遗传算法的原理、步骤和简单应用。

使用FileItem获取文件名时注意事项

获取文件名的时候&#xff0c;要注意对不同浏览器的处理&#xff0c;下面给出方法参考 FileItem类的常用方法&#xff1a; 1. boolean isFormField() isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单字段&#xff0c;还是一个文件表单字段&#xff0c;如果…

Winson.SqlPager 2.5 发布!

Winson.SqlPager 分页控件 版本: 2.5 此控件必须与Winson.Framework框架一起使用安装方法:只需将解压出来的 SqlPage.cs文件复盖了Winson.WControls\SqlPager\ 目录里的同名文件即可.由于之前的控件存在着一些比较严重的BUG,这次对SqlPager做了比较大的改动,修复了一些BUG和改进…

laravel中查看执行的SQL语句

今天想查看laravel框架中执行的SQL语句,百度了一圈,才找到,这文档真心看着不爽,下面上查看方法 DB::connection()->enableQueryLog();$navObj new NavModel();$data $navObj->where($where)->select($this->field)->orderBy(id, desc)->get();$log DB::ge…

Matlab与线性代数 -- 向量的范数

Matlab与线性代数 – 向量的范数

Mac下sublime text2 解决中文乱码

1.control ~ 调出console 2.粘贴以下代码并回车 import urllib2,os;pfPackage Control.sublime-package;ippsublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),wb).write(urllib2.urlopen(http://sublim…

封装DateTimePicker并使用绑定时遇到的问题

请教各位高手: 我想把一个控件封装起来.DateTimePicker 因为他的value的类型为DateTime所以不可以为Null 但是数据库里有一些日期是为空的.如离职日期 现在我写了一个类继承至DateTimePicker 使用public object Value覆盖了基类的Value方法 这样它就可以为NULL了. 在使用…

php入门01

关于变量 注意点&#xff1a; 在php中&#xff0c;变量是通过$符号定义的在php中&#xff0c;变量名是区分大小写的数据类型 布尔类型 布尔类型有两个值&#xff0c;true和false,它不区分大小写当我们用”echo”指令输出布尔类型时&#xff0c;如果是“true”则输出的是“1”&a…

遗传算法主程序

遗传算法主程序 本图文已经更新&#xff0c;详细地址如下&#xff1a; http://blog.csdn.net/lsgo_myp/article/details/54584840

jquery日历插件FullCalendar使用技巧

原文链接&#xff1a;http://blog.csdn.net/u013493957/article/details/44920341FullCalendar是一款基于jquery的日历控件,它有着很强大的功能&#xff0c;下面我来给大家介绍一下FullCalendar使用技巧吧&#xff0c;希望此方法对各位有帮助呀。简介 官方网站&#xff1a;http…

列表CheckBox全选 结合DataGrid 进行删除操作

//CheckBox全选function CA(){ var frmdocument.Form1; alert(frm) for (var i0;i<frm.elements.length;i) { var efrm.elements[i]; alert(e.type) alert(e.name) if ((e.name ! allbox) && (e.typecheckbox)) { …

遗传算法主程序(辅助)

遗传算法主程序&#xff08;辅助&#xff09; 本图文已经更新&#xff0c;详细地址如下&#xff1a; http://blog.csdn.net/lsgo_myp/article/details/54584840

互联网产品mysql数据库设计总结

mysql数据库性能不比oracle数据库&#xff0c;所以设计上&#xff0c;和oracle有一些不同。下面总结一些互联网产品的数据库设计。 1.主键 主键可以使用bigint(20) unsigned也可以使用varchar&#xff0c;使用bigint&#xff0c;可以设置为自增主键auto_increment。使用varch…

【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统

对于AI&#xff0c;我的初始想法非常easy&#xff0c;首先他要能动&#xff0c;而且是在地图里面动。 懂得撞墙后转弯&#xff0c;然后懂得射击&#xff0c;其它的没有了&#xff0c;基于这个想法&#xff0c;我首先创建了一个MyTank类&#xff0c;用于管理玩家的坦克的活动&am…

如何利用C#开发“扫雷”小游戏

本文详细说明了利用C#语言开发“扫雷”小游戏的开发过程。

spring ioc原理分析

spring ioc原理分析 spring ioc 的概念简单工厂方法spirng ioc实现原理 spring ioc的概念 ioc: 控制反转 将对象的创建由spring管理。比如&#xff0c;我们以前用new一个对象的方式自己创建一个对象&#xff0c;现在使用spring&#xff0c;不必自己new一个对象了&#xff0c…

PL/SQL集合类型的整理学习

http://log-cd.iteye.com/blog/521177 PL/SQL集合类型是类似于高级语言数组的一种复合数据类型&#xff0c;集合类型包括索引表&#xff08;PL/SQL表&#xff09;、嵌套表&#xff08;Nested Table&#xff09;和变长数组&#xff08;VARRAY&#xff09;三种类型。<一>、…

多条件组合查询+分页

比较麻烦&#xff0c;把他记录下来。前台UI&#xff1a;实现的类代码:程序代码/// <summary>/// 多条件组合查询/// </summary>/// <param name"suppliercode">供应商代码</param>/// <param name"materialcode">物料代码&l…

Matlab与线性代数 -- 矩阵的重组1

本图文介绍了矩阵重组的第一种情况用新的行或列取代原有矩阵的行或列。

工作中感受到的消息中间件在分布式系统中的使用场景

经历 以前在qunar实习&#xff0c;第一次接触消息中间件&#xff0c;那时候概念还不清楚&#xff0c;朦朦胧胧有个初步认识&#xff0c;现在正式工作了&#xff0c;又一次接触了消息中间件&#xff0c;初步总结几种场景。 场景 1.分布式系统中&#xff0c;不同系统之间传递消…

sql server 2005分页存储过程和sql server 2000分页存储过程(摘)

USE[svnhost]GO/****** 对象: StoredProcedure [dbo].[up_Page2005] 脚本日期: 05/21/2008 11:27:05 ******/SETANSI_NULLS ONGOSETQUOTED_IDENTIFIER ONGOCREATEproc[dbo].[up_Page2005]TableNamevarchar(50), --表名Fieldsvarchar(5000) *, --字段名(全部字段为…

topcoder srm 691 div1 -3

1、给定一个$n$个顶点$n$个边的图&#xff0c;边是$(i,a_{i})$&#xff0c;顶点编号$[0,n-1]$。增加一个顶点$n$,现在选出一个顶点集$M$,对于任意的在$M$中 的顶点$x$&#xff0c;去掉边$(x,a_{x})$&#xff0c;增加边$(x,n)$。最后使得顶点0和1相连。有多少种$M$? 思路&#…

Matlab与线性代数 -- 矩阵的重组2

本图文详细介绍了矩阵重组的第二种情况任意两行或两列进行对换。

mac通过tree源码编译安装tree

通过tree源码编译安装 下载源码&#xff1a;curl -O ftp://mama.indstate.edu/linux/tree/tree-1.6.0.tgz 解压源码&#xff1a;tar xzvf tree-1.6.0.tgz 修改Makefile文件&#xff1a; tree默认的是linux的编译环境&#xff0c;因此移植到mac里面需要注释掉linux的编译选项&am…

java IO流文件的读写具体实例

IO流的分类&#xff1a;1、根据流的数据对象来分&#xff1a;高端流&#xff1a;所有的内存中的流都是高端流&#xff0c;比如&#xff1a;InputStreamReader 低端流&#xff1a;所有的外界设备中的流都是低端流&#xff0c;比如InputStream&#xff0c;OutputStream 如何区分…

Matlab与线性代数 -- 矩阵的重组3

本图文详细介绍了矩阵重组的第三种情况&#xff0c;从矩阵中选取子矩阵。

ASP.NET小收集:IFrame使用

使用Iframe制作一个固定框架&#xff0c;很方便与象后台网站之类的页面1<html xmlns"http://www.w3.org/1999/xhtml">2<head runat"server">3<title>后台</title>4</head>5<frameset cols"170,*"framespacing&…

linux mac中实现类似secureCRT的clone session

在你的登录账户下的.ssh文件夹新建一个文件&#xff1a;config. cd ~/.ssh vi config config的文件中&#xff0c;内容为&#xff1a; host * ControlMaster auto ControlPath ~/.ssh/master-%r%h:%p 重新打开终端&#xff0c;第一次&#xff0c;你还是需要输入密码&#xff0c…