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里面时,必须改成中划线

  • 相关阅读:
    (3)Smali系列学习之Smali语法详解
    (2.1)Smali系列学习之基础语法
    (2.0)Smali系列学习之Smali语法
    Why NHibernate updates DB on commit of read-only transaction
    用LinqPad查看Nhibernate生成的sql语句
    Oracle中Clob类型处理解析
    时间线插件
    深入理解OAuth2.0协议
    项目经理问:为什么总是只有我在加班–挂包袱现象
    Nhibernate Case SUM
  • 原文地址:https://www.cnblogs.com/360linux/p/13062053.html
Copyright © 2011-2022 走看看