k8s ingress-nginx 使用 snippet 添加自定义配置 (比如:新增请求头)

比如在有些时候我们需要在 server 里或者 location 里添加一些参数,例如添加包体大小限制、添加跨域配置、添加自定义header、处理响应header等等。遇到这些需求的时候,我们开始怀念原生的 nginx 配置,因为那样我们可以随心所欲的修改。

我们有这样的需求,官方在做这个的时候,也做了一些考虑,为了我们提供了一些配置切入点,我们可以通过配置 annotation,按照官方提供的一些规则来将我们的一些自定义配置插入进去。

官方文档地址:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/

本文列出两种切入点示例:

  • nginx.ingress.kubernetes.io/configuration-snippet (用于插入 location 块代码段)
  • nginx.ingress.kubernetes.io/server-snippet (用于插入 server 块中的代码段)

使用示例:

kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/server-snippet: |-
      add_header Shy-Test 888;
      more_set_headers 'Shy-Hello: hello' 'Demo: demo';
  labels:
    cattle.io/creator: norman
  name: website-muses-docs
  namespace: muses-docs
  
  // 省略更多配置

如上示例就是在 nginx 的 server 块中添加两行代码。
add_header Shy-Test 888; 就是给响应头添加一个header。
more_set_headers 'Shy-Test: 666' 'Demo: demo'; 也是给响应头设置多个 header,与 add_header 不同的是,这个会覆盖,add 是追加。

或者是如下这种:

nginx.ingress.kubernetes.io/configuration-snippet: |
  more_set_headers "Request-Id: $req_id";

或者这个:

nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header My-Custom-Header $http_my_custom_header;
posted @ 2022-02-14 11:45  哈喽哈喽111111  阅读(5534)  评论(0编辑  收藏  举报