You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes Ingress Nginx镜像请求到外部端点时报子请求过大问题

问题原因

  1. 你在Ingress注解中配置的nginx.ingress.kubernetes.io/proxy-body-size: 50m只会作用于业务匹配的location块,Ingress Nginx自动生成的mirror内部location(即/_mirror-xxx的内部路由)不会继承该配置,默认使用Nginx全局的client_max_body_size默认值1M。你报错的请求体大小为1.47MB,超过了1M的限制,所以触发子请求过大错误,镜像请求被拦截,不会转发到存储后端。
  2. 你的注解存在拼写错误:nginx.ingress.kubernetes.io/use-reges应为nginx.ingress.kubernetes.io/use-regex,虽然该错误不直接影响本次mirror的问题,但会导致正则匹配类的配置不生效,建议修正。

解决方案

方案1:通过配置snippet给mirror内部location增加大小限制

在Ingress的annotations中增加nginx.ingress.kubernetes.io/configuration-snippet,手动给mirror的内部location设置client_max_body_size,示例配置如下:

nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /backend/process
nginx.ingress.kubernetes.io/proxy-body-size: 50m
nginx.ingress.kubernetes.io/mirror-target: https://us-west2-project-name.cloudfunctions.net/backend-store
# 新增以下配置
nginx.ingress.kubernetes.io/configuration-snippet: |
  location ~ ^/_mirror-.* {
      client_max_body_size 50m;
  }

方案2:全局调整Ingress Nginx控制器的默认client_max_body_size

如果你需要所有mirror请求都支持大文件,可以修改Ingress Nginx控制器的ConfigMap,增加client-max-body-size: 50m配置,该配置会全局生效,所有server和location的默认大小都会调整为50M。

额外优化(可选)

如果你的请求体普遍超过默认的client_body_buffer_size(默认8k/16k),可以通过nginx.ingress.kubernetes.io/client-body-buffer-size注解调整缓冲区大小,减少请求体落盘的情况,提升转发性能:

nginx.ingress.kubernetes.io/client-body-buffer-size: 10m

内容的提问来源于stack exchange,提问作者Silver Flash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:57:02