首页 > 解决方案 > 增加 K8S 入口的 URL 长度限制

问题描述

我有一个 GET 请求 URL 到我的 kubernetes 上的一个服务中,它大约 9k 长,看起来请求被卡在 Kubernetes 的入口中。当我尝试从 docker 内或集群中的其他 docker 调用 url 时,它工作正常。但是,当我通过域名时,我得到以下响应标头:

在此处输入图像描述

标签: httpkuberneteskubernetes-ingressnginx-ingress

解决方案


我认为您必须修改的参数是Client Body Buffer Size

为每个位置读取客户端请求正文设置缓冲区大小。如果请求正文大于缓冲区,则将整个正文或仅其部分写入临时文件。默认情况下,缓冲区大小等于两个内存页。这是 x86、其他 32 位平台和 x86-64 上的 8K。在其他 64 位平台上通常为 16K。此注释应用于入口规则中提供的每个位置

nginx.ingress.kubernetes.io/client-body-buffer-size: "1000" # 1000 bytes
nginx.ingress.kubernetes.io/client-body-buffer-size: 1k # 1 kilobyte
nginx.ingress.kubernetes.io/client-body-buffer-size: 1K # 1 kilobyte
nginx.ingress.kubernetes.io/client-body-buffer-size: 1m # 1 megabyte

所以你必须在你的 nginx 入口配置中添加一个注解。


推荐阅读