ALB-实现Nginx-ingress的server-snippet功能

2026年5月9日
336 次阅读
exploit

前言

在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参数即可解决这个问题

参考文档

通过控制台或Annotations自定义ALB Ingress的转发规则

ALIYUN::ALB::Rule转发规则。

评论区

0 / 500
* 为必填项