使用特使的路线和重定向

一个显示如何路由和重定向的 envoy.yaml 示例。

有不同的选择,见这里

https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#route-redirectaction

这个envoy.yaml将/taxgod和/taxgod/(第二个可能可以省略,因为第一个也应该匹配,我想)路由到一个新的端口和一个不同的协议。

/picockpit 被简单地重定向到 /

然后最后/被路由到target_picockpit后端

static_resources:
  听众。
  - 地址。
      socket_address:
        地址。0.0.0.0
        port_value: 80
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        配置。
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            virtual_hosts:
            - name: backend
              域名。["*"]
              路由。
              - 匹配。{ prefix:"/" }
                重定向。
                  path_redirect: "/"
                  https_redirect: true
          http_filters:
          - name: envoy.router
            config:{}
  - address:
      socket_address:
        地址。0.0.0.0
        port_value:443
    filter_chains:
    - tls_context:
        common_tls_context:
          tls_certificates:
          - certificate_chain: { filename: "/etc/example-com.crt" }
            private_key: { 文件名: "/etc/example-com.key" }
          alpn_protocols:[ "h2,http/1.1" ]
      过滤器。
      - name: envoy.http_connection_manager
        配置。
          stat_prefix: ingress_https
          route_config:
            virtual_hosts:
            - name: backend
              域名。["*"]
              路由。
              - 匹配。{ prefix:"/taxgod" }
                重定向: { port_redirect: 2080, path_redirect: "/", scheme_redirect: "http" }
              - 匹配。{ prefix:"/taxgod" }
                重定向:{ port_redirect: 2080, path_redirect: "/", scheme_redirect: "http" }
              - 匹配。{ prefix:"/picockpit/"}
                重定向: { path_redirect: "/" }
              - 匹配。{ prefix:"/picockpit" }
                重定向: { path_redirect: "/" }
              - 匹配。{ prefix:"/gagarin" }
                direct_response:{ status: 200, body:{ inline_string:"给我的黑夜带来救赎。美丽的投降是我想去的地方。"}}
              - 匹配。{ prefix:"/" }
                路线。{ cluster: target_picockpit }
          http_filters:
          - name: envoy.router
            config:{}
  集群。
  - name: target_taxgod
    connect_timeout:0.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:
    - socket_address:
        地址: taxgod
        port_value:3000
  - name: target_picockpit
    connect_timeout:0.25s
    类型: strict_dns
    lb_policy: round_robin
    hosts:
    - socket_address:
        地址: picockpit
        port_value:3000
admin:
  access_log_path:"/tmp/envoy.log"
  地址。
    socket_address:
      地址。0.0.0.0
      port_value: 9901