如何在 nginx 入口控制器和 kong 上增加最大请求正文大小
Posted
技术标签:
【中文标题】如何在 nginx 入口控制器和 kong 上增加最大请求正文大小【英文标题】:How to increase max request body size on nginx ingress controller and kong 【发布时间】:2019-12-11 05:52:48 【问题描述】:我有一项服务,它接受正文中带有 base64 编码文件的 POST。我目前正在
Error: 413 Request Entity Too Large
当我发布大于 1MB 的内容时,它可以正常工作。
我的设置有 kong 代理到该服务。我通过 stable kong helm 图表安装了代理入口的以下注释:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: “true”
ingress.kubernetes.io/proxy-body-size: 50m
我还将这个添加到 kong env 值中:
client_max_body_size: 0
我的理解是这应该更新 nginx.conf
Kong 前面有一个 nginx-ingress,我用 stable helm chart 安装了它。对于我设置的入口控制器:
--set controller.config.proxy-body-size: "50m"
但是,这些设置都不起作用。查看 ingress-controller 的 pod 日志,我看到:
2019/08/02 15:01:34 [warn] 42#42: *810139 a client request body is buffered to a temporary file /tmp/client-body/0000000014, client: 1X.XXX.X0.X, server: example.com, request: "POST /endpoint HTTP/1.1", host: "example.com"
以及kong pod中对应的log:
2019/08/02 15:01:39 [warn] 33#0: *1147388 a client request body is buffered to a temporary file /usr/local/kong/client_body_temp/0000000017, client: XX.XXX.XXX.XX, server: kong, request: "POST /ENDPOINT HTTP/1.1", host: "example.com"
10.120.20.17 - - [02/Aug/2019:15:01:39 +0000] "POST /endpoint HTTP/1.1" 413 794 "-" "PostmanRuntime/7.15.2"
我是否缺少其他设置,或者我正在处理这个错误?我怎样才能让它按预期工作。
如果我只是直接使用它的 IP 发布到 pod,则不涉及任何入口控制器,我会收到相同的 413 错误。 Kubernetes 是否有一个默认入口也需要更改?【问题讨论】:
如果你把client-max-body-size
设置成proxy-body-size
50m呢?请参阅413 Request Entity Too Large 和File upload limit in Kubernetes & Nginx
我也试过了。原来这是对实际吊舱的限制。这些是无 kubeless 的 pod,并且限制在瓶子上。
所以kong pod不接受POST,对吧?
【参考方案1】:
注释似乎工作正常。我遇到的限制是因为我正在测试的代码是在 kubeless 中。 kubeless 函数使用瓶子,入口限制在瓶子上。我在 kubeless 的自定义 python3.7 映像中增加了它,并且一切正常。
【讨论】:
以上是关于如何在 nginx 入口控制器和 kong 上增加最大请求正文大小的主要内容,如果未能解决你的问题,请参考以下文章
Kong 如何在 NGINX 和 OpenResty 上工作