秀米云香港服务器

414 Request-URI Too Large

#客户端请求头缓冲区巨细,假如请求头总长度大于小于128k,则利用此缓冲区,#请求头总长度大于128k时利用large_client_header_buffers配置的缓存区client_header_buffer_size128k;#large_client_header_buffers指令参数4为个数,128k为巨细,默认是8k。申请4个128k。large_client_header_buffers4128k;

序列号 CPU RAM HDD 带宽 售价(美元) 免费试用
香港服务器1 E5-2620 32G 1T HDD 50M/无限流量 $196.00 立即申请
香港服务器2 E5-2650 32G 1T HDD 50M/无限流量 $256.00 立即申请
香港服务器3 E5-2680 32G 1T HDD 50M/无限流量 $316.00 立即申请
香港服务器4 E5-2690 32G 1T HDD 50M/无限流量 $336.00 立即申请
香港服务器5 E5-2697 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器6 E5-2620*2 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器7 E5-2650*2 32G 1T HDD 50M/无限流量 $436.00 立即申请
香港服务器8 E5-2680*2 32G 1T HDD 50M/无限流量 $476.00 立即申请
香港服务器9 E5-2690*2 32G 1T HDD 50M/无限流量 $556.00 立即申请
香港服务器10 E5-2697*2 32G 1T HDD 50M/无限流量 $596.00 立即申请
香港服务器11 E5-2680v4*2 32G 1T HDD 50M/无限流量 $696.00 立即申请
香港服务器12 E5-2698v4*2 32G 1T HDD 50M/无限流量 $796.00 立即申请

当http 的URI太长可能request header过大时会报414 Request URI too large或400 bad request错误。

大概原因

场景1.cookie中写入的值太大造成的,因为header中的其他参数的size一般较量牢靠,只有cookie大概被写入较大的数据

场景2.请求参数太长,好比宣布一个文章正文,用urlencode后,利用get方法传到靠山。

GEThttp://www.264.cn/HTTP/1.1Host:www.264.cnConnection:keep-aliveCache-Control:max-age=0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.31Accept-Encoding:gzip,deflate,sdchAccept-Language:zh-CN,zh;q=0.8Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3Cookie:bdshare_firstime=1363517175366;If-Modified-Since:Mon,13May201313:40:02GMT

当请求头过大时,高出large_client_header_buffer时,nginx大概返回"Request URI too large" (414)可能"Bad-request"(400)错误,

如上例HTTP请求头由多行组成,个中"GET http://www.264.cn/ HTTP/1.1"暗示Request line

当Request line的长度大于large_client_header_buffer的一个buffer(128k)时,nginx会返回"Request URI too large" (414)错误,对应上面的场景2。

请求投中最长的一行也要小于large_client_header_buffer,当不是Request line的最长行大于一个buffer(128k)时,会返回"Bad-request"(400)错误,对应上面的场景1。

办理步伐:这时可以调大上述两个值。

client_header_buffer_size512k;large_client_header_buffers4512k;

504 Gateway Time-out之前网站一直是利用nginx做署理后端的apache运行php来提供处事。

apache常常会不按期不按时间的呈现不能处事失去响应,然后nginx呈现"504 Gateway Time-out"

查察错误日志也看不到任何对象,觉得是apache的bug(其实不是,下面会说原因)。

也许年数大了人就不爱折腾,愿意保持原状不动,利用监控东西,每次收到报警后都从头启动apache委曲维持着。

终于有一天我烦了,不就是处理惩罚php吗,我不消apache总行了吧,,一怒之下利用源安装php-fpm转移到php-fpm来运行php。

安装php并不贫苦,利用源安装照旧很顺利的,独一需要做的就是配置php worker事情历程的日志输出php错误日志。

一切筹备停当后把本来的proxy_pass换成fastcgipass就可以了。

upstreamapachephp{serverwww.quancha.cn:8080;#Apache1}....proxy_passhttp://apachephp;

替换成成

upstreamphp{server127.0.0.1:9000;}...fastcgi_passphp;

就可以把apache上跑的php迁移到php-fpm上来跑。

原觉得这样就可以安枕无忧了,迁移完成是也确实没什么问题,可是假如你不去阐明问题的基础原因在哪。

问题照旧会找上门来,第二天nginx又报了504的gateway timeout。

这回没apache什么事了吧,apache总算撇清了干系。

那应该照旧在nginx和php-fpm身上,查察nginx的错误日志,可以看到

[error]6695#0:*168438upstreamtimedout(110:Connectiontimedout)whilereadingresponseheaderfromupstream,...request:"GET/kd/open.php?company=chinapost&number=PA24977020344HTTP/1.1",upstream:"fastcgi://127.0.0.1:9000",host:"www.quancha.cn"

看到这里根基上就解除了nginx嫌疑,nginx是在期待php处理惩罚"GET /kd/open.php?company=chinapost&number=PA24977020344 HTTP/1.1"超时退出了。

顿时重启php-fpm,问题没有了,网站可以会见了。

再次会见该页面,依然没有响应,但同时会见此外页面正常,该页面刷新屡次后,整个网站都是bad gateway timeout了。

问题就缩小到这个php剧本上了。

netstat-napo|grep"php5-fpm"|wc-l

查察php事情历程已经到达了设置文件里的上限10,有种感受就是各人都被open.php这个剧本卡住了。

这个剧本是干什么的呢?这个剧本就是收罗快递信息的,内里用到了php_curl。

PHP剧本假如执行时间高出php.ini中的设置项max_execution_time不出功效就会强制退出。

查察了php.ini中max_execution_time确实配了,值为30。

万能google派上用场了,颠末不绝google后获得下面这句话

标题:Nginx处事器中的414错误和504错误的办理要领

地址: https://www.yunhk.xyz/26071.html