某个请求一点开一看,报错414 Request-URI Too Large。问题很清楚,就是请求的get数据太多了,MY GOD,这种情况怎么能存在,将这么多数据放在get请求中当参数。好吧,事已至此,只能去解决了。服务端是proxy+nginx+php结构,先得从nginx配置修改开始:本文地址:http://www.04007.cn/article/736.html,未经许可,不得转载.
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
client_max_body_size 128m;本文地址:http://www.04007.cn/article/736.html,未经许可,不得转载.
一般来讲,幸运的话,改完这个你的问题也就解决了。因为你的请求数据并不是很大,或者直接说没有超过64K改完就能正常。不过我修改完nginx配置之后,再次请求,这次不再报414了,但报的是500错误。说明nginx层已经接受这个请求,查看nginx的error错误日志,发现日志上有新内容[alert] 74#74: *133 fastcgi request record is too big: 99904, client: 10.17.. 。
这个报错的意思超过了fastcgi请求记录的限制,太大了没法请求。怎么办?凉办,我google了好多,也进行过多种尝试,基本得到的答案是没法解决,因为这个限制是在nginx中硬编码的。FastCGI将一条记录限制为65535(即64K),而从上方可以看到我的请求大小达到了99904,因为nginx没法发送整个FastCGI。一般的FastCGI请求不会超过1K。64K也已经不小了,但碰到了这个问题也是无语。
目前就只能是这个答案,大家如果有解决办法希望能告之。牛人可以去改Nginx源码使用更大的值进行实验打包看看。还有一个难接受的方案就是返回到apache + mod_php。不过我想返回到apache + mod_php都能接受,还不如改改代码把请求方式改成POST,正常情况本来就也不应该在get请求里搞这么多数据啊。本文地址:http://www.04007.cn/article/736.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/736.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |