900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 阿里云ACK的kubernetes集群业务访问提示 414 Request-URI Too Large

阿里云ACK的kubernetes集群业务访问提示 414 Request-URI Too Large

时间:2020-10-29 01:34:59

相关推荐

阿里云ACK的kubernetes集群业务访问提示 414 Request-URI Too Large

一.故障现象

公司的业务系统访问提示报414 Request-URI Too Large

二.故障原因排查

出现问题的服务是通过阿里云的ACK的kubernnetes集群ingress控制器转发的,使用的镜像是aliyun-ingress-controller:v0.30.0.1,ingress-controller底层是nginx,通过抓包分析定位414返回码为ingress-controller返回。

通过网上查找Nginx 414 Request-URI Too Large报错解决方法,思路如下:

1.原因:当请求头过大时,超过large_client_header_buffer时,nginx可能返回"Request URI too large" (414)或者"Bad-request"(400)错误,请求投中最长的一行也要小于large_client_header_buffer,当不是Request line的最长行大于一个buffer(128k)时,会返回"Bad-request"(400)错误

2.解决方法:在nginx.conf的http段中加入以下参数:

client_header_buffer_size 512k;large_client_header_buffers 4 512k;client_max_body_size 100m;

三.最终解决办法

尝试配置client_header_buffer_size,large_client_header_buffers,client_max_body_size 100m;到nginx-ingress-controller的configmap,configmap的名称是nginx-configuration,命名空间在kube-system(根据安装的ingress控制器所在的命名空间不同而不同)

client_header_buffer_size 和large_client_header_buffers必须配置到nginx-ingress-controller的configmap里面,进而注入到nginx.conf里面的http配置段覆盖默认值

默认值如下:

client_header_buffer_size 1k;client_header_timeout 60s;large_client_header_buffers4 8k;client_body_buffer_size 8k;client_body_timeout 60s;

client_header_buffer_size 和large_client_header_buffers配置到nginx-ingress-controller的configmap里面时,下划线必须改成中划线,即为client-header-buffer-size、large-client-header-buffers。

在阿里云图形化界面配置如下

也可以通过命令行编辑nginx-configuration添加

kubectl edit cm nginx-configuration -n kube-system

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。