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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM