Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

431 request header fields too large annotation ignored #4593

Closed
geoffreysamper opened this issue Sep 24, 2019 · 7 comments · Fixed by #4604
Closed

431 request header fields too large annotation ignored #4593

geoffreysamper opened this issue Sep 24, 2019 · 7 comments · Fixed by #4604

Comments

@geoffreysamper
Copy link

What keywords did you search in NGINX Ingress controller issues before filing this one?

Is this a BUG REPORT? Yes
NGINX Ingress controller version: 0.25.1

Kubernetes version (use kubectl version):
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:23:09Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.10-eks-5ac0f1", GitCommit:"5ac0f1d9ab2c254ea2b0ce3534fd72932094c6e1", GitTreeState:"clean", BuildDate:"2019-08-20T22:39:46Z", GoVersion:"go1.11.13", Compiler:"gc", Platform:"linux/amd64"}

Environment:

  • PROVIDER aws:
  • OS (e.g. from /etc/os-release):
  • Kernel (e.g. uname -a):
  • Install tools:
  • Others:

What happened:
logs.txt
en defining an ingress for a specific pod and requesting it via a largeurl +/- 4000 chars. a response with status 431 request header fields too large returned
After adding follow annotations on the ingress or changing it via config map it still returned error 431

  • nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
  • nginx.ingress.kubernetes.io/proxy-body-size: 8M
  • nginx.ingress.kubernetes.io/client-body-buffer-size: 1M

response headers*
HTTP/1.1 431 Request Header Fields Too Large
Server: openresty/1.15.8.1
Date: Tue, 24 Sep 2019 07:40:24 GMT

How to reproduce it (as minimally and precisely as possible):
I create a small github sample https://github.com/geoffreysamper/simple-site see read me

@aledbf
Copy link
Member

aledbf commented Sep 24, 2019

nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
nginx.ingress.kubernetes.io/proxy-body-size: 8M
nginx.ingress.kubernetes.io/client-body-buffer-size: 1M

None of those settings are related to the error you receive, but the body of the request.

HTTP/1.1 431 Request Header Fields Too Large

The problem is in the size of the header

Please adjust:

That said, from the log:

185.43.127.79 - [185.43.127.79] - - [24/Sep/2019:07:51:26 +0000] "GET /status?q=0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 HTTP/1.1" 431 5 "-" "curl/7.58.0" 4115 0.038 [default-simple-site-svc-5000] [] 10.0.3.68:5000 0 0.000 431 f714781969fab0da02e9b061a688070c

10.0.3.68:5000 0 0.000 431 f714781969fab0da02e9b061a688070c

This means your application behind the service default/simple-site-svc is the one returning the HTTP status code 431.

@geoffreysamper
Copy link
Author

geoffreysamper commented Sep 24, 2019

I added follow to the configmap client-header-buffer-size: 16k because it uses HTTP 1.1 and did redploy of the ingress controll still the same error.

Some other things

  • When testing the test_longurl.sh inside a container of the cluster AND sending it directly to the simple-service-svc meaning bypass the ingress controller. Then the simple site return a 200
  • Did another test where I setup a regular inginx and with the same app and then works too.

So I really think it something todo with the ingress controller.

@geoffreysamper
Copy link
Author

I deployed another ingress controller (from nginx inc) to check if I had the same issues. With nginxinc ingress controller my test works.
What I don't understand why the setting below are ignored for the ingress-controller (not nginxinc )

nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
nginx.ingress.kubernetes.io/proxy-body-size: 8M
nginx.ingress.kubernetes.io/client-body-buffer-size: 1M

The headers of the nginxinc ingress contoller
HTTP/1.1 200 OK
Server: nginx/1.17.3
Date: Wed, 25 Sep 2019 07:11:08 GMT

The headers of kubernetes nginx ingress controller
HTTP/1.1 431 Request Header Fields Too Large
Server: openresty/1.15.8.1
Date: Tue, 24 Sep 2019 07:40:24 GMT

I googled openresty for status 431 but didn't find a lot. Will keep digging

@ElvinEfendi
Copy link
Member

@aledbf
Copy link
Member

aledbf commented Sep 25, 2019

@geoffreysamper I can confirm that only adding proxy-add-original-uri-header: "false" in the configuration configmap solves the issue. We are changing the default value to avoid this problem.

This means your application behind the service default/simple-site-svc is the one returning the HTTP status code 431.

Also, this confirms my initial comment, that this error was returned by your application. To can test this sending a request directly to your app

aledbf@me:~/go/src/k8s.io/ingress-nginx$ k exec -it -n ingress-nginx nginx-ingress-controller-588786f9fc-8cmh4  bash
www-data@nginx-ingress-controller-588786f9fc-8cmh4:/etc/nginx$ q='426134891623984612873649182736498712634897126349871623498716239487612394876123984761239874612398746123987461298374612987364912837641982736419823764192873469128736419287346912873649182376491827364981273649812736491827364981273649182736491283764192873641928376419827364918273649187236498172364981273649812736498127364981273649182736491872364918273649182736498127364198237461982376491827364981723649817236498126349871623498761239847612983746918273649187236498712634987126349871623984761293874698712364987123649871263498761293874689172364981273649182736491823764918273640123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
www-data@nginx-ingress-controller-588786f9fc-8cmh4:/etc/nginx$ echo q length  $(expr length $q)
q length 4590
www-data@nginx-ingress-controller-588786f9fc-8cmh4:/etc/nginx$ curl simple-site-svc.default:5000/?q=$q
www-data@nginx-ingress-controller-588786f9fc-8cmh4:/etc/nginx$ curl simple-site-svc.default:5000/?q=$q -H "Test: $q" -v*   Trying 10.102.13.3...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x7f465c500000)
* Connected to simple-site-svc.default (10.102.13.3) port 5000 (#0)
> GET /?q=426134891623984612873649182736498712634897126349871623498716239487612394876123984761239874612398746123987461298374612987364912837641982736419823764192873469128736419287346912873649182376491827364981273649812736491827364981273649182736491283764192873641928376419827364918273649187236498172364981273649812736498127364981273649182736491872364918273649182736498127364198237461982376491827364981723649817236498126349871623498761239847612983746918273649187236498712634987126349871623984761293874698712364987123649871263498761293874689172364981273649182736491823764918273640123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 HTTP/1.1
> Host: simple-site-svc.default:5000
> User-Agent: curl/7.64.0
> Accept: */*
> Test: 426134891623984612873649182736498712634897126349871623498716239487612394876123984761239874612398746123987461298374612987364912837641982736419823764192873469128736419287346912873649182376491827364981273649812736491827364981273649182736491283764192873641928376419827364918273649187236498172364981273649812736498127364981273649182736491872364918273649182736498127364198237461982376491827364981723649817236498126349871623498761239847612983746918273649187236498712634987126349871623984761293874698712364987123649871263498761293874689172364981273649182736491823764918273640123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde0123456789abcde1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
> 
< HTTP/1.1 431 Request Header Fields Too Large
< Connection: close
< 
* Closing connection 0

@geoffreysamper
Copy link
Author

Thx
The reason for the error was nodejs/node#25528

@balacasa
Copy link

@ElvinEfendi can we explain exact code of how to set proxy-add-original-uri-header as "false".
I tried in annotation,
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
cert-manager.io/cluster-issuer: xxxxxxxxxxxxxxxx
nginx.ingress.kubernetes.io/proxy-add-original-uri-header: "false"
nginx.ingress.kubernetes.io/large-client-header-buffers: 4 100k
nginx.ingress.kubernetes.io/server-snippet: |
large_client_header_buffers 4 100k;

Didn't work. Is this correct?
Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants