阿里云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_buffers     4 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 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忍冬行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值