比如在有些时候我们需要在 server 里或者 location 里添加一些参数,例如添加安全头、包体大小限制、添加跨域配置、添加自定义header、处理响应header等等。遇到这些需求的时候,我们开始怀念原生的 nginx 配置,因为那样我们可以随心所欲的修改。
我们有这样的需求,官方在做这个的时候,也做了一些考虑,为了我们提供了一些配置切入点,我们可以通过配置 annotation,按照官方提供的一些规则来将我们的一些自定义配置插入进去。
官方文档地址:注释 - NGINX 入口控制器 (kubernetes.github.io)
本文列出两种切入点示例:
- nginx.ingress.kubernetes.io/configuration-snippet (用于插入 location 块代码段)
- nginx.ingress.kubernetes.io/server-snippet (用于插入 server 块中的代码段)
安全头使用示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: >
more_set_headers 'X-Content-Type-Options: nosniff' 'X-Frame-Options:
SAMEORIGIN' "X-XSS-Protection : 1 mode=block ";
name: default-ingress
namespace: default
//省略其他配置
官网实例:
configuration-snippet
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Request-Id: $req_id";
server-snippet
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
set $agentflag 0;
参阅:https://devpress.csdn.net/k8s/62f99feec6770329307ff078.html
标签:ingress,自定义,kubernetes,server,snippet,nginx,io From: https://blog.51cto.com/u_11791718/6147073