繁体   English   中英

在路径级别应用 nginx-ingress 注释

[英]Apply nginx-ingress annotations at path level

我们正在从传统的 nginx 部署迁移到 kubernetes nginx-ingress 控制器。 我正在尝试在location级别应用设置,但看不到如何使用注释执行此操作。

例如,我们有:

server {
  listen 80;
  server_name example.com;

  location /allow-big-uploads {
    client_max_body_size 100M;
    ...
  }
}

我们翻译成这样:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 100m <-- this now applies globally
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /allow-big-uploads
            backend:
              serviceName: example-svc
              servicePort: 5009

path部分下添加该注释似乎不起作用。 我错过了什么吗?

注解只能在整个 kubernetes 资源上设置,因为它们是资源元数据的一部分。 入口规范不包括较低级别的功能。

如果您正在寻找更复杂的设置, traefik为其入口控制器构建了一个自定义资源定义,允许每个服务进行更多配置。 缺点是定义与其他入口控制器不兼容。

如果您在同一主机上有 2 个位置,并且只想在一个位置上应用设置,则可以使用相同的主机创建 2 个入口,并在您感兴趣的入口上应用配置片段注释:

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#configuration-snippet

nginx.ingress.kubernetes.io/configuration-snippet: |

  more_set_headers "Request-Id: $req_id";

我已经尝试过这个例子并且它有效。

但是,当我尝试通过配置片段更改client_max_body_size 时,出现错误:

"client_max_body_size" directive is duplicate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM