Myluzh Blog

K8S Ingress-nginx修改上传大小限制

发布时间: 2024-2-23 文章作者: myluzh 分类名称: Kubernetes 朗读文章


0x00 前言
最近遇到一个问题:客户端上传大一点的文件,http就直接响应Status Code:  413 Request Entity Too Large
由于k8s ingress的上游还有一个nginx,所以先判断是不是nginx限制了上传大小,
nginx配置文件client_max_body_size没有问题,那就是ingress-nginx限制了大小,所以就有了下面这篇文章...
root@iZbp12bkuvg20e1j3y9gtvZ:/etc/nginx/conf.d# grep "client_max_body_size" *.conf
prd-all.conf:      client_max_body_size 100m;
test-all.conf:      client_max_body_size 100m;

0x01 单个Ingress资源调整请求体大小限制
在Kubernetes中,当使用Nginx Ingress Controller时,若需要调整请求体大小限制,您可以直接在Ingress资源中添加相应的annotations。
1、编辑Ingress资源
在Ingress资源的YAML文件中,添加或修改以下annotations:
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
 name: my-ingress  
 annotations:  
   # 这里注解用于指定请求体的最大大小,这里设置为20MB。
   nginx.ingress.kubernetes.io/proxy-body-size: 20m  
spec:  
 ...
2、应用配置变更
保存并更新Ingress资源
kubectl apply -f your-ingress.yaml
3、验证配置
检查Nginx Ingress Controller的日志或使用kubectl describe命令查看Ingress资源的详细信息,确保配置生效。

0x02 调整Nginx Ingress Controller的请求体大小限制
若希望对所有Ingress资源统一设置请求体大小限制,可以通过修改Nginx Ingress Controller的全局配置来实现。
1、找到ConfigMap
首先,找到Nginx Ingress Controller的ConfigMap。
kubectl get configmaps -n <ingress-namespace>
2、编辑ConfigMap
kubectl edit configmap <nginx-ingress-configmap-name> -n <ingress-namespace>
3、设置请求体大小限制
在ConfigMap的data字段下,添加或修改proxy-body-size的值。例如:
data:  
 proxy-body-size: 20m
4、完成编辑后,保存并退出。Nginx Ingress Controller会自动重新加载配置,全局应用新的请求体大小限制。


标签: nginx Ingress client_max_body_size annotations proxy-body-size

发表评论