您正在查看 Apigee Edge 文档。
请查看 Apigee X 文档。
拥有付费帐号的 Cloud 客户和面向私有云的所有 Edge 客户可以在组织中创建虚拟主机。创建虚拟主机的用户必须为 Organization Administrator 角色,或者具有修改虚拟主机的自定义角色。其他角色的用户无权创建虚拟主机。
观看视频,了解虚拟主机。
创建虚拟主机
按照以下基本过程创建虚拟主机。您实际使用的程序取决于您是 Cloud 客户还是私有云客户,以及是否启用了 TLS:
- 为您公开的域名创建 DNS 条目和 CNAME 记录。
- 如果在虚拟主机上启用 TLS,请执行以下操作:
- 按照下文所述的过程创建和配置密钥库:密钥库和 Truststore。
- 将证书和密钥上传到密钥库。确保您的证书指定的域名与您要用于虚拟主机的主机别名匹配。
- 使用 Edge 界面或 API 创建对密钥库的引用。该引用将密钥库的名称和引用类型指定为
KeyStore
。如需详细了解如何创建和修改引用,请参阅使用引用。 - 如果您要执行双向 TLS,请创建一个信任库,上传证书并创建对信任库的引用。按照下述过程(密钥库和 Truststore)创建信任库。
- 使用 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
私有云边缘用户可使用
http://ms-ip:9000
(本地),其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择管理 > 虚拟主机。
- 选择环境,例如 prod 或 test。
系统会显示为环境定义的虚拟主机。 - 选择 + 虚拟主机以创建虚拟主机,或选择现有虚拟主机的名称以进行修改。
为 HTTP 创建虚拟主机
适用于私有云的 Edge 客户可以使用 HTTP 创建虚拟主机。
要创建不支持 TLS 的虚拟主机,请创建一个用于定义虚拟主机的 XML 对象。例如,以下 XML 对象定义了使用 HTTP 协议的虚拟主机:
<VirtualHost name="myVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>80</Port> </VirtualHost>
在此定义中,您:
- 将 name 指定为 myVHost。使用名称在 API 代理或 API 调用中引用虚拟主机。
- 将主机别名指定为 api.myCompany.com。这是用于访问 API(如 DNS 定义和 CNAME 记录所定义)的公开网域。
- 将 port 编号指定为 80。如果省略,则端口默认设置为 443。
您还可以在虚拟主机中设置其他属性。 有关所有属性的参考信息,请参阅虚拟主机属性参考文档。
如果您有任何现有的 API 代理,请将虚拟主机添加到代理端点中的 <HTTPConnection>
元素。虚拟主机会自动添加到所有新的 API 代理。
请参阅配置 API 代理以使用虚拟主机。如果您创建了不应通过特定虚拟主机访问的新 API 代理,则必须修改 API 代理,以从其虚拟端点中移除该虚拟主机。
然后,您可以向此虚拟主机发出请求,以访问 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>
使用引用的好处是,您可以更改引用的值以更改虚拟主机使用的密钥库,通常是因为当前密钥库中的证书即将过期。更改引用的值不需要重启边缘路由器。如需详细了解如何创建和修改引用,请参阅使用引用。
您只能使用密钥库和信任库的引用;而不能使用别名的引用。更改密钥库的引用时,确保证书的别名与旧密钥库中的别名相同。
使用密钥库和信任库的引用时存在限制
使用对密钥库和信任库的引用时,您必须考虑以下限制:
- 只有在支持 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 客户均可使用 更新虚拟主机 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 代理以使用虚拟主机。
使用 删除虚拟主机 API 删除虚拟主机:
curl -X DELETE \ https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \ -u orgAdminEmail:password
查看有关虚拟主机的信息
查看环境中定义的虚拟主机的相关信息,如下所述。
边缘
如需使用 Edge 界面查看有关虚拟主机的信息,请执行以下操作:
- 登录 apigee.com/edge。
私有云边缘用户可使用
http://ms-ip:9000
(本地),其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择管理 > 虚拟主机。
- 选择环境,例如 prod 或 test。
系统会显示该环境定义的虚拟主机。如果虚拟主机配置为使用密钥库或信任库,请点击显示查看更多信息。
如果虚拟主机配置为使用 TLS/SSL,则虚拟主机的名称旁边会显示一个锁形图标。这意味着 TLS/SSL 证书、密钥和证书链已上传到 Edge 并与虚拟主机关联。如需查看可用证书的相关信息,请运行以下命令:
- 在左侧导航栏中,依次选择管理 > 环境 > TLS 密钥库。
- 选择环境(通常是
prod
或test
)。 - 展开密钥库以查看证书。
传统版 Edge(私有云)
如需使用传统版 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" ]
如需查看特定虚拟主机的相关信息,请使用 获取虚拟主机 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 指定为“安全”,以查看 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>
表示客户端可以使用“安全”虚拟主机的主机别名调用 API 代理。
在以下情况下,您通常会修改与 API 代理关联的虚拟主机:
- 创建新的虚拟主机并拥有现有的 API 代理。您必须修改现有 API 代理才能添加新的虚拟主机。
- 您创建了无法通过特定虚拟主机访问的新 API 代理。您必须修改 API 代理,才能从定义中移除该虚拟主机。
如需修改与 API 代理关联的虚拟主机,请执行以下操作:
-
按照下文所述访问 API 代理编辑器。
边缘
如需使用 Edge 界面访问 API 代理编辑器,请执行以下操作:
- 登录 apigee.com/edge。
私有云边缘用户可使用
http://ms-ip:9000
(本地),其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择开发 > API 代理。
- 在列表中选择您要修改的 API 代理。
传统版 Edge(私有云)
如需使用传统版 Edge 界面访问 API 代理编辑器,请执行以下操作:
- 登录
http://ms-ip:9000
,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在顶部导航栏中依次选择 API > API 代理。
- 在列表中选择您要修改的 API 代理。
- 登录 apigee.com/edge。
- 点击开发标签页。
- 在代理端点下,选择默认。
- 在代码区域中:
- 移除 API 代理不支持的虚拟主机的所有
<VirtualHost>
元素。 - 使用新的虚拟主机名称添加新的
<VirtualHost>
元素。例如,如果新虚拟主机名为 MyVirtualHost,请添加以下标记:
<HTTPProxyConnection> <BasePath>/v1/my/proxy/basepath</BasePath> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> <VirtualHost>MyVirtualHost</VirtualHost> </HTTPProxyConnection>
- 移除 API 代理不支持的虚拟主机的所有
- 保存 API 代理。如果已部署 API 代理,则保存此代理以使用新设置重新部署。
为 API 代理设置边缘界面显示的基准网址
Edge 界面会根据与主机部署位置相对应的虚拟主机中的设置显示 API 代理的网址。此屏幕可以包含虚拟主机的路由器端口号。
在大多数情况下,边缘界面中显示的网址是向代理发出外部请求的正确网址。不过,对于某些配置,显示的网址不正确。例如,以下任何一种配置都可能会导致显示的网址与向代理发出外部请求的实际网址不一致:
- 负载平衡器上发生 SSL 终止
- 负载平衡器和 Apigee 路由器之间的端口映射
- 配置了路径重写的负载平衡器
Edge 支持名为 <BaseUrl>
的虚拟主机上的属性,可让您替换边缘界面显示的网址。以下示例显示了具有 <BaseUrl>
属性的虚拟主机对象。
在此示例中,值“http://myCo.com”会显示在 Edge 界面中:
<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”。