配置虚拟主机

本主题讨论虚拟主机配置。虚拟主机允许 Apigee Hybrid 处理向多个域名发出的 API 请求,并将代理基本路径路由到特定环境。

要指定应将特定 API 代理基本路径路由到的环境,请使用 virtualhosts.routingRules[] 配置属性。如需详细了解各个属性,请参阅配置属性参考文档中的 virtualhosts。例如:

...

virtualhosts:
  - name: vhost-one
    hostAliases: ["api.example.com"]
    sslCertPath: ./certs/fullchain.pem
    sslKeyPath: ./certs/privkey.pem
    routingRules:
      - paths:
        - /orders
        - /items
        env: test1
      - paths:
        - /customers
        env: test2

envs:
  - name: test1
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json
  - name: test2
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json

当 API 调用进入时(例如 https://api.example.com/orders),会将请求发送到 test1 环境的消息处理器。同样,如果向 https://api.example.com/customers 发出的请求进入,则系统会将其路由到 test2 环境。

添加新环境

要添加新环境,请将其配置添加到 envs[] 属性,然后添加新的 virtualhosts.routingRules.path 条目以指定要映射到新环境的基本路径。在以下示例中,添加了名为 test3 的新环境,并更新了 routingRules,以便将两个路径路由到新环境:

virtualhosts:
  - name: vhost-one
    hostAliases: ["api.example.com"]
    sslCertPath: ./certs/fullchain.pem
    sslKeyPath: ./certs/privkey.pem
    routingRules:
      - paths:
        - /orders
        - /items
        env: test1
      - paths:
        - /v0/hello
        - /httpbin
        env: test2
      - paths:
        - /v0/inventory
        - /v0/customers
        env: test3

envs:
  - name: test1
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json
  - name: test2
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json
  - name: test3
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json

要应用更新,您只需应用 runtime 组件,如下所示:

apigeectl apply -f overrides-file.yaml -c runtime

添加多个虚拟主机

virtualhosts[] 属性是一个数组,因此您可以创建多个。每个虚拟主机必须包含一组唯一的主机别名:两个虚拟主机不能共享同一主机别名。例如,新的虚拟主机 dev 处理发送到 api.internal.com 网域的流量。

virtualhosts:
  - name: vhost-one
    hostAliases: ["api.example.com"]
    sslCertPath: ./certs/fullchain.pem
    sslKeyPath: ./certs/privkey.pem
    routingRules:
      - paths:
        - /orders
        - /items
        env: test1
      - paths:
        - /v0/hello
        - /httpbin
        env: test2
      - paths:
        - /v0/inventory
        - /v0/customers
        env: test3

  - name: vhost-two
    hostAliases: ["api.internal.com"]
    sslCertPath: ./certs/fullchain.pem
    sslKeyPath: ./certs/privkey.pem
    routingRules:
      - paths:
        - /orders
        - /items
        env: test1
      - paths:
        - /v0/hello
        - /httpbin
        env: test2
      - paths:
        - /v0/inventory
        - /v0/customers
        env: test3

envs:
  - name: test1
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json
  - name: test2
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json
  - name: test3
    serviceAccountPaths:
      synchronizer: ./sa/synchronizer.json
      udca: ./sa/udca.json

要应用更新,您只需应用 runtime 组件,如下所示:

apigeectl apply -f overrides-file.yaml -c runtime

TLS 密钥和证书

创建新虚拟主机时,您必须提供 TLS 密钥和证书。密钥/证书用于提供与入站流量网关的安全通信。

您决定如何为混合配置生成正确的 TLS 证书/密钥对。以下主题仅作为示例提供,主要用于在无法以其他方式获取 TLS 凭据时尝试或测试新的混合安装: