请求标头“太长”时Nginx入口控制器400错误

问题描述 投票:1回答:1

NGINX Ingress控制器版本:0.18.0 Kubernetes版本(使用kubectl版本):1.11.1云提供商或硬件配置:Azure(AKS)安装工具:helm

发生了什么:当请求url / header“太长”时,Ingress控制器在某个GET时出现400错误。

您期望发生的事情:请求被传递到正确的服务和pod。

如何重现它(尽可能最小和最精确):我们使用keycloak进行身份验证。当用户使用keycloak生成的访问令牌登录GET时。访问令牌为用户提供应用程序内的某些权限。用户具有为其提供其他/更多权限的角色。当用户具有许多角色时,访问令牌显着更长,从而导致ingres控制器上的400。对于角色较少的用户,它工作正常,我们可以看到GET请求被传递给正确的服务。

我们需要知道的任何其他事情:我们已经尝试过调整标头缓冲区大小等从4k到8和16k但是没有做任何事情。我将入口控制器loglevel设置为debug,但它没有提供有关400错误的更多信息。

azure kubernetes kubernetes-helm kubernetes-ingress azure-kubernetes
1个回答
2
投票

我们通过设置后端服务,一个带有嵌入式Tomcat的Spring Boot服务,配置server.max-http-header-size:64000解决了这个问题。因此必须引发Nginx服务和后端服务设置。

© www.soinside.com 2019 - 2024. All rights reserved.