• kubernetes-ingress处理路由路径


    aliyun相关文档

    配置URL重定向的路由服务

    当使用Nginx Ingress Controller的时候,Nginx会将路径完整转发到后端(如,从Ingress访问的/service1/api路径会直接转发到后端Pod的/service1/api/路径)。如果您后端的服务路径为/api,则会出现路径错误,导致404的情况。该情况下,您可以通过配置rewrite-target的方式,来将路径重写至需要的目录。

    部署以下模板,创建Nginx Ingress

    cat <<-EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: foo.bar.com
      namespace: default
      annotations:
        # URL重定向。
        nginx.ingress.kubernetes.io/rewrite-target: /$2
    spec:
      rules:
      - host: foo.bar.com
        http:
          paths:
        # 在Ingress Controller的版本≥0.22.0之后,path中需要使用正则表达式定义路径,并在rewrite-target中结合捕获组一起使用。
          - path: /svc(/|$)(.*)
            backend:
              service: 
                name: web1-service
                port: 
                  number: 80
            pathType: ImplementationSpecific
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    执行以下命令,访问Nginx服务。

    替换IP_ADDRESS为Ingress对应的IP,可通过kubectl get ing获取。

    curl -k -H "Host: foo.bar.com"  http://<IP_ADDRESS>/svc/foo
    
    • 1

    预期输出:

    web1: /foo
    
    • 1

    Rewrite配置

    使用nginx.ingress.kubernetes.io/rewrite-target注解支持基本的Rewrite配置,对于一些复杂高级的Rewrite需求,可以通过如下注解来实现:

    nginx.ingress.kubernetes.io/server-snippet:扩展配置到Server章节。

    nginx.ingress.kubernetes.io/configuration-snippet:扩展配置到Location章节。

    配置示例:

    annotations:
         nginx.ingress.kubernetes.io/server-snippet: |
             rewrite ^/v4/(.*)/card/query http://foo.bar.com/v5/#!/card/query permanent;
         nginx.ingress.kubernetes.io/configuration-snippet: |
             rewrite ^/v6/(.*)/card/query http://foo.bar.com/v7/#!/card/query permanent;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    示例配置生成的nginx.conf如下所示。

    # start server foo.bar.com
        server {
            server_name foo.bar.com ;
            listen 80;
            listen [::]:80;
            set $proxy_upstream_name "-";
        # server-snippet配置。
            rewrite ^/v4/(.*)/card/query http://foo.bar.com/v5/#!/card/query permanent;
            ...
        # configuration-snippet配置。
          rewrite ^/v6/(.*)/card/query http://foo.bar.com/v7/#!/card/query permanent;
          ...
        }
        # end server foo.bar.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    GPU版本安装Pytorch教程最新方法
    Xilinx FPGA平台DDR3设计详解(一):DDR SDRAM系统框架
    UE5 局域网联机,寻找会话失败。
    Rafy 框架:领域控制器
    【Linux】服务器恶意登录记录及解决方案
    期末作业C#实现学生宿舍管理系统
    python数值与字符串高级用法
    PHP传输base64数据不完整解决方法
    2022前端CSS经典面试题
    智慧食堂这个技术,有点秀
  • 原文地址:https://blog.csdn.net/baidu_38432732/article/details/134427460