运维挖坑埋坑之旅—-413 Request Entity Too Large

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1575160

       好久没写博文了,天天忙的喘不过来气。最近是该总结总结前段时间的工作了,顺便缓解下这两天的霉气。

       今天在内部上了一套图片编辑系统,结果下午就收到开发的报错,报错信息如下:

<html>
<head><title>413 Request Entity Too Large</title></head>
<body bgcolor="white">
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx/1.6.0</center>
</body>
<html>

       通过提示信息可以看出该问题是由于客户端请求的内容过大造成的,进一步查看HTTP状态码表,可以看到HTTP协议中是这样定义这个错误的:

服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。此种情况下,服务器可以关闭连接以免客户端继续发送此请求。

       通过和开发交流,发现当在前端程序上传大于1M的图片时,会产生以上报错信息。

       之前经常看nginx的书籍,了解 nginx 涉及到上传的参数有 3 个。

client_body_buffer_size # 配置请求实体缓存区大小。当上传的请求实体超出缓存区大小时,会写到client_body_temp_path配置的路径下去
client_body_temp_path   # 设置临时文件存放路径,该路径必须有写权限,不然会报 500 错误
client_max_body_size    # 设置上传文件的最大值,默认值为1M

       因此就想到这个错误可能和 client_max_body_size 有关。

       经过查看nginx的配置文件,发现尚未配置这个值。这说明就使用的是该参数的默认值 1 M。于是,我就在该配置文件中添加了相关参数:

client_body_temp_path /usr/local/nginx/html;
client_body_buffer_size 128k;
client_max_body_size 8M;

       添加完毕之后,重载 nginx 服务。开发那边测试正常,问题解决。

转自:http://nolinux.blog.51cto.com/4824967/1575160

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/1943