zoukankan      html  css  js  c++  java
  • ingress-nginx-controller 414 Request—URI Too Large

    问题

            线上某平台,通过Jenkins的API查询流水线的执行历史记录时,报错414.

     

    排查

             1.jenkins的访问,使用的为ingress的访问方式,414的返回码,可能是jenkins本身返回,也可能是ingress-controller返回(使用的为nginx-ingress-controller,版本为0.26.1)。于是同时对ingress-controller和jenkins的pod抓包,定位414返回码为ingress-controller返回(同时刻jenkins的pod未抓取到414的返回码),同时在nginx-ingress-controller的日志也显示414的错误;判定调用jenkins的API时,请求到nginx-ingress-controller时就被中止了。

                             如上图,在ingress-controller的上面抓包的414错误

              2.排查Request—URI Too Large,为请求头参数过长的错误,解决办法为加大client_header_buffer_size 和large_client_header_buffers的配置。于是修改jenkins对应的ingress的annotation部分,检查nginx-ingress-controller的对应server段配置文件,配置已经生效。

            3.在nginx-ingress-controller的server增加了上述配置后,发现查询流水线执行历史记录,仍然报错414.网上未搜索到配置不生效原因,于是尝试配置client_header_buffer_size,large_client_header_buffers到nginx-ingress-controller的configmap(nginx-ingress-controller会把configmap里面的配置注入到nginx.conf的http配置段),初始在configmap里面,client_header_buffer_size,large_client_header_buffers都是使用的下划线,发现一直无法注入到配置文件;后改成中划线后才注入成功,414问题才解决。

     总结

            1.client_header_buffer_size 和large_client_header_buffers必须配置到nginx-ingress-controller的configmap里面,进而注入到nginx.conf里面的http配置段覆盖默认值;通过ingress的annotation,虽然能单独配置client_header_buffer_size 和large_client_header_buffers,注入到nginx.conf的server段,但是优先级较低,系统仍以http的配置为主(查询nginx官网未找到此两点优先级的说明,待进一步调查)。

            2.client_header_buffer_size 和large_client_header_buffers配置到nginx-ingress-controller的configmap里面时,必须改成中划线

  • 相关阅读:
    postgresql全文检索部署实施
    从一整数数组中找出只重复一次的两个数
    Edit Distance 最小编辑距离
    Vue:v-model指令在其他元素类型的使用
    Vue:v-model指令
    Vue:v-on指令
    Vue:v-bind指令
    Vue:v-for指令
    框架Django
    Vue的安装和语法
  • 原文地址:https://www.cnblogs.com/360linux/p/13062053.html
Copyright © 2011-2022 走看看