本主题讨论虚拟主机配置。虚拟主机允许 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 凭据时尝试或测试新的混合安装:
- 请参阅获取 TLS 凭据,获取一组创建授权 TLS 证书/密钥对的示例步骤。
- 您只能使用自签名证书/密钥对来进行测试。请参阅生成自签名 TLS 凭据。