前言
在nginx-ingress 迁移到 alb的过程中。遇到了server-snippet 注解。alb不支持的问题。导致所有的域名txt验证都要重新发布到一个nginx服务中。对于维护alb非常浪费时间。
解决方法
阿里云alb支持按照下面的条件进行重写
- ALB 转发条件(conditions)
- ALB 转发动作(actions)
- 或者 AScript 脚本
并且也有对应的实现方法
| NGINX server-snippet | ALB 实现方式 |
|---|---|
| location 拦截 | conditions + fixed-response |
| rewrite | rewrite action |
| header 注入 | insert-header |
| IP 白名单 | source-ip 条件 |
| UA 拦截 | header 条件 + AScript |
| 跳转 | redirect |
| 自定义逻辑 | AScript |
那么下面我们就简单介绍下如何让alb支持server-snippet功能
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: h5-ing
namespace: dev
annotations:
alb.ingress.kubernetes.io/listen-ports: |
[{"HTTP":80},{"HTTPS":443}]
# ALB 固定返回验证文件
alb.ingress.kubernetes.io/actions.mp-verify: |
[{
"type":"FixedResponse",
"FixedResponseConfig":{
"contentType":"text/plain",
"httpCode":"200",
"content":"Rzytmmw6dWZR4YhH"
}
}]
spec:
ingressClassName: alb
rules:
- host: xxxxx
http:
paths:
# 微信/支付宝验证文件
- path: /MP_verify_Rzytmmw6dWZR4YhH.txt
pathType: Exact
backend:
service:
name: mp-verify
port:
name: use-annotation
# 正常业务
- path: /
pathType: Prefix
backend:
service:
name: h5-svc
port:
number: 3002
tls:
- hosts:
- xxxxx
上述文件为ALB的配置文件,自定义actions.mp-verify 规则 并加入FixedResponse参数即可解决这个问题
评论区