我需要client_max_body_size
在我的配置文件中配置特定位置,Ingress
然后才是默认值。如何做到这一点?我查看了文档,但没有找到任何内容。我不想全局执行此操作。
此外,如果我使用注释,它将用于所有路径,我只希望它用于特定的路径。
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "4m"
location /upload-path {
client_max_body_size 6M;
}
答案1
按照Nginx 文档,可以client_max_body_size
分3个部分设置:
- http,
- 服务器,
- 地点
nginx ingress controller
请设置此值,您必须在pod中更改它,确切地说是在 中/etc/nginx/nginx.conf
。
下面的例子:
$ kubectl exec -ti <ingres-controller-pod> /bin/bash
$ kubectl exec -ti nginx-ingress-controller-6b85b64f49-rwxlf /bin/bash
编辑 nginx.conf 文件。
$ vi /etc/nginx/nginx.conf
在我的示例中,来自入口的主机名是my.pod.svc
。
现在你需要找到server
文件的正确部分。你可以搜索它,因为它会像下面这样被注释掉。
## start server <your host name from ingress>
如下所示:
## start server my.pod.svc
server {
server_name my.pod.svc ;
...
现在您必须找到正确的位置。在本例中,它将是/pod
。
location ~* "^/pod" {
set $namespace "default";
您必须在此处指定该值。
默认是2M,修改的时候别忘了;
。
有类似的帖子堆栈溢出。在该主题中,您还可以找到另一个示例的链接这里。
完成此更改后,您将需要重新加载 nginx。
编辑:
另一个选项(OP 在这种情况下使用)是使用annotation
。
nginx.ingress.kubernetes.io/proxy-body-size: 8m
这样它将应用整个集群。
可以使用的另一个注释是configuration_snippet 注释对于此示例,仅将大小设置为/upload-path
,它看起来像:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-snippet
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
location /upload-path {
client_max_body_size 8M;
}