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

  • 相关阅读:
    OSX安装nginx和rtmp模块(rtmp直播服务器搭建)
    用runtime来重写Coder和deCode方法 归档解档的时候使用
    Homebrew安装卸载
    Cannot create a new pixel buffer adaptor with an asset writer input that has already started writing'
    OSX下面用ffmpeg抓取桌面以及摄像头推流进行直播
    让nginx支持HLS
    iOS 字典转json字符串
    iOS 七牛多张图片上传
    iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them
    Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
  • 原文地址:https://www.cnblogs.com/360linux/p/13062053.html
Copyright © 2020-2023  润新知