Nginx遇到超长的post或get请求时,nginx会反回413、400、414错误。
post和get方式的解决办法:
针对post方式
client_max_body_size 10M;
指定允许客户端请求的最大的单个文件大小,如果请求大于指定的值,客户端将收到一个"413 Request Entity Too Large"错误。
client_body_in_single_buffer 16k;
指定连接请求使用的缓存区大小,如果连接请求超过缓存区指定的值,那么这些请求或部分请求将尝试写入一个临时文件。
client_body_temp_path /data/tmp;
设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中,注意路径要有写入权限。
针对get方式
client_header_buffer_size 8k;
指定客户端请求的http头部缓存区大小,大多数情况下一个头部请求的大小不会大于1k,不过如果有来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓存区,这个值可以在large_client_header_buffers里面设置。
large_client_header_buffers 16 16k;
如果设置过小HTTP头/Cookie过大时会报400错误"nginx 400 bad request ",如果超过buffer就会报"414 Request URI too large"错误,nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报"nginx 400 bad request "错误。