以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我
Ingress 进阶使用(示例)
1、Ingress 实现重定向
该功能等价于 Nginx 配置中的 return 语句。
...
kind: Ingress
metadata:
annotations:
# 当客户端请求的 path 匹配到时,强制重定向至指定地址
nginx.ingress.kubernetes.io/permanent-redirect: http://demo.com
# 指定重定向状态码
nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
# 当客户端请求的 path 匹配到时,重定向至 HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: "true"
# 不管客户端请求的 path 是否匹配到,强制重定向至 HTTPS
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
...
2、Ingress 实现路由跳转
该功能等价于 Nginx 配置中的 rewrite 语句。
...
kind: Ingress
metadata:
annotations:
# 当客户端请求的 path 匹配到时,跳转至指定路由,$2 代表第二个括号的占位符
nginx.ingress.kubernetes.io/rewrite-target: /$2
...
spec:
...
/api(/|$)(.*)
...
3、Ingress 实现自定义配置
...
kind: Ingress
metadata:
annotations:
# 插入 location 块配置片段
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite /api/($/.*) /$1 break ;
# 插入 server 块配置片段
nginx.ingress.kubernetes.io/server-snippet: |
server_name demo.com ;
...
4、Ingress 实现 CORS
...
kind: Ingress
metadata:
annotations:
# 允许 CORS
nginx.ingress.kubernetes.io/enable-cors: "true"
# 指定允许的请求源,默认为 *
nginx.ingress.kubernetes.io/cors-allow-origin: "http://demo.com"
# 指定允许的请求方法
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
# 指定允许的请求头
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
# 指定允许传递凭证
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
...
5、Ingress 实现限流
...
kind: Ingress
metadata:
annotations:
# 单个 IP 地址允许的并发连接数。超出此限制时,将返回 503 错误
nginx.ingress.kubernetes.io/limit-connections: "100"
# 速率限制的放大系数,默认值为 5(充当乘数)
nginx.ingress.kubernetes.io/limit-burst-multiplier: "5"
# 单个 IP 地址每秒钟接受的请求数
nginx.ingress.kubernetes.io/limit-rps: "100"
# 限制发送给后端服务的发送速率(千字节数/秒),0 为禁用速率限制
nginx.ingress.kubernetes.io/limit-rate: "0"
# 从速率限制中排除的源 IP 范围
nginx.ingress.kubernetes.io/limit-whitelist: "xx.xx.xx.xx/xx, ..."
...
Ingress 配置注意事项