Nginx Ingress 返回 413 实体太大

v2t*_*2to 21 kubernetes nginx-ingress

在我的集群上,我正在尝试上传一个大文件,但是当我尝试时,我得到了413 Error

error parsing HTTP 413 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>413 Request Entity Too Large</title></head>\r\n<body>\r\n<center><h1>413 Request Entity Too Large</h1></center>\r\n<hr><center>nginx/1.19.3</center>\r\n</body>\r\n</html>\r\n"
Run Code Online (Sandbox Code Playgroud)

我知道这是由 nginx 的默认参数引起的,我需要覆盖它。在文档中,我发现可以通过两种方式完成此操作:

  1. 在入口配置上使用注释
  2. 使用配置映射

我已经尝试了两种方法都没有结果。

这是我的 yaml:ingress.yml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: "700m"
  name: nginx-ingress
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              serviceName: nginx-service
              servicePort: 80
            path: /              
Run Code Online (Sandbox Code Playgroud)

和 configmap.yml:

apiVersion: v1
data:
  proxy-body-size: "800m"
kind: ConfigMap
metadata:
  name: ingress-nginx-controller
  labels:
    app.kubernetes.io/name: nginx-ingress
    app.kubernetes.io/part-of: nginx-ingress
Run Code Online (Sandbox Code Playgroud)

raf*_*kar 23

对于未来的搜索,它对我有用:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
  name: docker-registry
  namespace: docker-registry
spec:
Run Code Online (Sandbox Code Playgroud)

  • “将大小设置为 0 将禁用对客户端请求正文大小的检查。” - 请参阅文档:https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size (3认同)

Lor*_*ord 12

对于 NGINX,当请求中的大小超过客户端请求正文允许的最大大小时,将向客户端返回 413 错误。这个大小可以通过参数配置

要为所有 Ingress 规则全局配置此设置,可以在 NGINX ConfigMap 中设置 proxy-body-size 值。要在 Ingress 规则中使用自定义值,请定义以下注释:

nginx.ingress.kubernetes.io/proxy-body-size: 8m
Run Code Online (Sandbox Code Playgroud)

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-max-body-size

对于node.js你可以设置

app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb' }));
Run Code Online (Sandbox Code Playgroud)