您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
拥有付费账号的 Cloud 客户以及所有 Edge for Private Cloud 客户 都可以在组织中创建虚拟主机。创建虚拟主机的用户必须担任组织管理员角色,或者担任具有修改虚拟主机权限的自定义角色。其他角色的用户无权创建虚拟主机。
观看虚拟主机简介视频。
创建虚拟主机
请使用以下基本过程创建虚拟主机。 您使用的实际过程取决于您是 Cloud 客户还是 Private Cloud 客户, 以及您是否启用 TLS:
- 为面向公众的网域创建 DNS 条目和 CNAME 记录。
- 如果在虚拟主机上启用 TLS,请执行以下操作:
- 按照此处所述的过程创建和配置密钥库: 密钥库和信任库。
- 将证书和密钥上传到密钥库。确保证书指定的域名与您要用于虚拟主机的主机别名一致。
- 使用 Edge 界面或 API 创建对密钥库的引用。此引用
指定密钥库的名称,并将引用类型指定为
KeyStore。如需详细了解如何创建和修改引用,请参阅 使用引用。 - 如果您要执行双向 TLS,请创建信任库,上传证书, 并创建对信任库的引用。按照此处所述的过程创建信任库:密钥库和信任库。
- 使用 Create a Virtual Host API 创建虚拟主机。如果启用 TLS,请务必指定正确的密钥库引用, 信任库引用和密钥别名。
- 如果您有任何现有 API 代理,请将虚拟主机添加到 ProxyEndpoint。
虚拟主机会自动添加到所有新的 API 代理。请参阅
配置 API 代理以使用虚拟主机。
更新 API 代理以使用虚拟主机,并为该主机别名创建 DNS 条目和 CNAME 记录后,您就可以访问该 API 代理,如下所示:
https://api.myCompany.com/v1/project-base-path/resource-path
例如:
https://api.myCompany.com/v1/weather/forecastrss?w=12797282
使用 API 或界面创建虚拟主机
您可以使用 Edge API 或 Edge 界面创建虚拟主机。
以下大多数示例都使用 Edge API。如需使用 Edge 界面创建、修改和删除 虚拟主机,请执行以下操作:
- 登录 apigee.com/edge
Edge for Private Cloud 客户使用
http://ms-ip:9000(本地),其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择管理 > 虚拟主机 。
- 选择环境,例如 prod 或 test 。
系统会显示为该环境定义的虚拟主机。 - 选择 + 虚拟主机 以创建虚拟主机,或选择现有虚拟主机的名称以对其进行修改。
为 HTTP 创建虚拟主机
Edge for Private Cloud 客户可以使用 HTTP 创建虚拟主机。
如需创建不支持 TLS 的虚拟主机,请创建一个定义该 虚拟主机的 XML 对象。例如,以下 XML 对象定义了一个使用 HTTP 协议的虚拟主机:
<VirtualHost name="myVHost">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>80</Port>
</VirtualHost>在此定义中,您将执行以下操作:
- 将名称 指定为 myVHost 。使用该名称引用 虚拟主机在 API 代理或 API 调用中。
- 将主机别名 指定为 api.myCompany.com。这是用于访问您的 API 的面向公众的网域,由 DNS 定义和 CNAME 记录定义。
- 将端口 号指定为 80 。如果省略,则默认情况下 端口设置为 443。
您可以在虚拟主机中设置其他属性。 如需查看所有属性的参考,请参阅 虚拟主机属性参考。
如果您有任何现有 API 代理,请将虚拟主机添加到 <HTTPConnection> 元素
在代理端点中。虚拟主机会自动添加到所有新的 API 代理。
请参阅配置 API 代理以使用虚拟主机。
如果您创建了一个新的 API 代理,该代理不应通过特定的虚拟主机访问,
则必须修改该 API 代理,以从其 ProxyEndpoint 中移除该虚拟主机。
然后,您可以通过向以下网址发出请求,通过此虚拟主机访问 API 代理:
http://api.myCompany.com/proxy-base-path/resource-path https://api.myCompany.com/proxy-base-path/resource-path
使用 Create a Virtual Host API 创建虚拟主机:
curl -X POST -H "Content-Type:application/xml" \
http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
-d '<VirtualHost name="myVHost">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>80</Port>
</VirtualHost>' \
-u sysAdminEmail:password为单向 TLS 创建虚拟主机
以下 XML 对象定义了单向 TLS 的虚拟主机:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<Port>443</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>在此定义中,您可以通过将 <Enable> 元素
设置为 true 来启用 TLS,并使用 <KeyStore> 和 <KeyAliase> 元素
指定 TLS 连接使用的密钥库和密钥别名。
如需详细了解如何使用 TLS,请参阅 TLS/SSL。
确定如何在虚拟主机中指定密钥库和信任库名称
配置虚拟主机以支持 TLS 时,您可以使用 引用指定密钥库。引用是一个包含密钥库或 信任库名称的变量,而不是直接指定密钥库或信任库名称,如下所示:
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>使用引用的优势在于,您可以更改引用的值以更改 虚拟主机使用的密钥库,更改的原因通常是因为当前密钥库中的证书即将 过期。更改引用值不需要重启 Edge 路由器。如需详细了解如何创建和修改引用,请参阅使用引用。
您只能使用密钥库和信任库的引用;而不能使用 别名的引用。更改密钥库的引用时,确保证书的别名与旧密钥库中的别名 相同。
使用密钥库和信任库的引用时的限制
使用密钥库和 信任库的引用时,您必须考虑以下限制:
- 仅当您支持 SNI 并在 Apigee 路由器上终止 SSL 时,才能在虚拟主机中使用密钥库和信任库引用。
- 如果您在 Apigee 路由器前面具有负载平衡器,并且您在 负载平衡器上终止 TLS,则无法在虚拟主机中使用密钥库和信任库引用。
为双向 TLS 创建虚拟主机
如需启用双向 TLS,请将 <ClientAuthEnabled> 元素设置为
true,并使用带有 <TrustStore> 元素的 引用 指定信任库。信任库
包含客户端的证书颁发者和证书的 CA 链,这是必需的。此外,还必须为双向 TLS 正确配置客户端
。
如需为双向 TLS 创建虚拟 主机,请创建一个定义该虚拟主机的 XML 对象:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<Port>443</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>true</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<TrustStore>ref://myTestTruststoreRef</TrustStore>
</SSLInfo>
</VirtualHost>在此定义中,您将执行以下操作:
- 通过将
<ClientAuthEnabled>设置为 true 来启用双向 TLS。 - 使用
<TrustStore>元素指定对信任库的引用。信任库 包含客户端的证书颁发者和证书的 CA 链,这是必需的。
如需详细了解如何使用 TLS,请参阅 TLS/SSL。
修改虚拟主机
拥有付费账号的 Cloud 客户以及所有 Edge for Private Cloud 客户都可以使用 Update a Virtual Host API 更新虚拟主机。借助此 API,您可以设置虚拟主机的所有 属性,如虚拟主机属性参考中所述。
使用 Update a Virtual Host API 更新虚拟主机。使用该 API 时,您必须在请求正文中指定 虚拟主机的完整定义,而不能仅指定要更改的元素。
在此示例中,您设置了 proxy_read_timeout 属性的值:
curl -X PUT -H "Content-Type:application/xml" \
https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
-d '<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<Port>443</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
<Properties>
<Property name="proxy_read_timeout">50</Property>
</Properties>
</VirtualHost>' \
-u orgAdminEmail:password删除虚拟主机
如需从环境中删除虚拟主机,您必须先更新引用该虚拟主机的任何 API 代理,以移除该引用。请参阅 配置 API 代理以使用虚拟 主机。
使用 Delete a Virtual Host API 删除虚拟主机:
curl -X DELETE \ https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \ -u orgAdminEmail:password
查看有关虚拟主机的信息
查看有关在环境中定义的虚拟主机的信息,如下所述。
Edge
如需使用 Edge 界面查看有关虚拟主机的信息,请执行以下操作:
- 登录 apigee.com/edge。
Edge for Private Cloud 客户使用
http://ms-ip:9000(本地),其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择管理 > 虚拟主机 。
- 选择环境,例如 prod 或 test 。
系统会显示为该环境定义的虚拟 主机。如果虚拟主机配置为使用密钥库或信任库, 请点击显示以查看更多信息。
如果虚拟主机配置为使用 TLS/SSL,则虚拟主机名称旁边会显示锁形图标。这意味着 TLS/SSL 证书、密钥和证书链已上传到 Edge 并与该虚拟主机相关联。如需查看有关可用 证书的信息,请执行以下操作:
- 在左侧导航栏中,依次选择管理 > 环境 > TLS 密钥库 。
- 选择环境(通常是
prod或test)。 - 展开密钥库以查看证书。
经典版 Edge (Private Cloud)
如需使用经典版 Edge 界面查看有关虚拟主机的信息,请执行以下操作:
- 登录
http://ms-ip:9000,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择管理 > 虚拟主机 。
- 选择环境,例如 prod 或 test 。
- 点击 Virtual Hosts (虚拟主机)标签页。
系统会显示为该环境定义的虚拟 主机。如果虚拟主机配置为使用密钥库或信任库, 请点击显示以查看更多信息。

如果虚拟主机配置为使用 TLS/SSL,则虚拟主机名称旁边会显示锁形图标。这意味着 TLS/SSL 证书、密钥和证书链已上传到 Edge 并与该虚拟主机相关联。如需查看有关可用 证书的信息,请执行以下操作:
- 在顶部导航栏中,依次选择管理 > TLS 证书 。
- 选择环境(通常是
prod或test)。 - 展开密钥库以查看证书。
使用 Edge API 查看虚拟主机
您还可以使用 Edge API 查看有关虚拟主机的信息。例如,List Virtual Hosts API 会返回所有虚拟主机的列表:
curl -X GET -H "accept:application/xml" \
https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts \
-u orgAdminEmail:pWord其中,orgAdminEmail:pWord 是组织管理员的用户名和密码,而 org_name/env_name 指定包含虚拟主机的 组织和环境。示例响应:
[ "default", "secure" ]
如需查看有关特定虚拟主机的信息,请使用 Get Virtual Host API:
curl -X GET -H "accept:application/xml" \
https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
-u orgAdminEmail:pWord其中,vhost_name 是 虚拟主机的名称。例如,您可以将 vhost_name 指定为“secure”,以 查看 Apigee 创建的默认安全虚拟主机的配置:
<VirtualHost name="secure">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<Port>443</Port>
<Properties/>
<Interfaces/>
<RetryOptions/>
<SSLInfo>
<ClientAuthEnabled>false</ClientAuthEnabled>
<Enabled>true</Enabled>
<KeyAlias>freetrial</KeyAlias>
<KeyStore>ref://freetrial</KeyStore>
<IgnoreValidationErrors>false</IgnoreValidationErrors>
</SSLInfo>
</VirtualHost>配置 API 代理以使用虚拟 主机
创建新的 API 代理时,Edge 会自动将其配置为使用组织中的所有可用虚拟 主机。通过虚拟主机向 API 代理发出的请求采用以下形式:
https://host-alias/proxy-base-path/resource-path
其中:
- host-alias 通常是虚拟主机的 DNS 名称。
- proxy-base-path 是在创建 API 代理时定义的,并且对于每个 API 代理都是唯一的。
- resource-path 是可通过 API 代理访问的资源的路径。
控制 API 代理使用的虚拟主机
在 API 代理的 XML 配置中,您可以使用 virtualhost 标记指定与 API 代理关联的虚拟主机的
名称:
<HTTPProxyConnection> <BasePath>/v1/my/proxy/basepath</BasePath> <VirtualHost>secure</VirtualHost> <VirtualHost>default</VirtualHost> </HTTPProxyConnection>
例如,<VirtualHost>secure</VirtualHost> 表示
客户端可以使用“secure”虚拟主机的主机别名调用 API 代理。
通常,在以下情况下,您需要修改与 API 代理关联的虚拟主机:
- 您创建了一个新的虚拟主机,并且有现有的 API 代理。您必须修改所有现有的 API 代理,以添加新的虚拟主机。
- 您创建了一个新的 API 代理,该代理不应通过特定的虚拟主机访问。 您必须修改该 API 代理,以从其定义中移除该虚拟主机。
如需修改与 API 代理关联的虚拟主机,请执行以下操作:
-
访问 API 代理编辑器,如下所述。
Edge
如需使用 Edge 界面访问 API 代理编辑器,请执行以下操作:
- 登录 apigee.com/edge。
Edge for Private Cloud 客户使用
http://ms-ip:9000(本地),其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择开发 > API 代理 。
- 在列表中选择要修改的 API 代理。
经典版 Edge (Private Cloud)
如需使用经典版 Edge 界面访问 API 代理编辑器,请执行以下操作:
- 登录
http://ms-ip:9000,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在顶部导航栏中,依次选择 API > API 代理 。
- 在列表中选择要修改的 API 代理。
- 登录 apigee.com/edge。
- 点击开发 标签页。
- 在 Proxy Endpoints(代理端点)下,选择 default 。
- 在代码区域中:
- 移除 API 代理不支持的虚拟主机的所有
<VirtualHost>元素。 - 添加一个包含新虚拟主机名称的新
<VirtualHost>元素 。例如,如果新虚拟主机名为 MyVirtualHost,请添加以下标记:
<HTTPProxyConnection> <BasePath>/v1/my/proxy/basepath</BasePath> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> <VirtualHost>MyVirtualHost</VirtualHost> </HTTPProxyConnection>
- 移除 API 代理不支持的虚拟主机的所有
- 保存 API 代理。如果 API 代理已部署,则保存该代理会使用新 设置重新部署该代理。
设置 Edge 界面为 API 代理显示的基本网址
Edge 界面会根据与代理部署位置对应的虚拟主机 中的设置显示 API 代理的网址。此显示内容可以包含 虚拟主机的路由器端口号。
在大多数情况下,Edge 界面中显示的网址是向代理发出外部 请求的正确网址。但是,对于某些配置,显示的网址不正确。例如,以下任何一种配置都可能导致显示的网址与用于向代理发出外部请求的实际网址不符:
- SSL 终止发生在负载平衡器处
- 负载平衡器和 Apigee 路由器之间发生端口映射
- 配置了路径重写的负载平衡器
Edge 支持虚拟主机上的一个名为 <BaseUrl> 的属性,该属性可让
您替换 Edge 界面显示的网址。以下示例展示了
包含<BaseUrl>属性的
虚拟主机对象。在此示例中,Edge 界面中显示的值为“http://myCo.com”:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>api.myCompany.com</HostAlias>
</HostAliases>
<BaseUrl>http://myCo.com</BaseUrl>
<Port>443</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>请注意,<BaseUrl> 的值必须包含协议(即“http://”或
“https://”)。
如果未设置 <BaseUrl>,则 Edge 界面呈现的默认网址将
显示为“api.myCompany.com”,而实际主机别名为“http://myCo.com”。