<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
拥有付费账号和所有 Edge(面向 Private Cloud 客户)的 Cloud 客户 可以在组织中创建虚拟主机。用户 创建虚拟主机的角色必须为组织管理员,或者 拥有修改虚拟主机权限的自定义角色。其他角色的用户没有 授权创建虚拟主机。
观看视频介绍虚拟主机。
创建虚拟主机
使用以下基本过程创建虚拟主机。 实际使用的流程取决于您是 Cloud 客户还是 Private Cloud 客户, 以及您是否启用了 TLS:
- 为您的公开网域创建 DNS 条目和 CNAME 记录。
- 如果在虚拟主机上启用 TLS:
- 按照下述步骤创建和配置密钥库: 密钥库和信任库。
- 将您的证书和密钥上传到密钥库。确保您的 cert 与您要用于虚拟主机的主机别名匹配。
- 使用 Edge 界面或 API 创建对密钥库的引用。参考
将密钥库的名称和引用类型指定为
KeyStore
。请参阅 使用参考文档 详细了解如何创建和修改参考文件。 - 如果您要执行双向 TLS,请创建一个信任库,上传证书, 并创建对信任库的引用。按照所述的过程创建信任库 此处:密钥库和信任库。
- 使用 创建 虚拟主机 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 使用
http://ms-ip:9000
(本地),其中 ms-ip 是 管理服务器节点的 IP 地址或 DNS 名称。 - 在左侧导航栏中,依次选择 Admin > Virtual Hosts。
- 选择环境,例如 prod 或 test。
虚拟 系统会显示为环境定义的主机。 - 选择 + 虚拟主机以创建虚拟主机,或者选择一个 对其进行修改
为 HTTP 创建虚拟主机
适用于私有云客户的 Edge 可以使用 HTTP 创建虚拟主机。
要创建不支持 TLS 的虚拟主机,请创建一个定义 虚拟主机。例如,以下 XML 对象定义了一个使用 HTTP 协议的 协议:
<VirtualHost name="myVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>80</Port> </VirtualHost>
在此定义中,您可以:
- 将 name 指定为 myVHost。使用名称引用 API 代理或 API 调用中的虚拟主机。
- 将主机别名指定为 api.myCompany.com。这是 用于访问由 DNS 定义和 CNAME 定义的 API 的公开域 记录。
- 将端口编号指定为 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
使用 创建 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>
元素来启用 TLS
设为 true,并使用 <KeyStore>
和 <KeyAliase>
元素。
以指定 TLS 连接使用的密钥库和密钥别名。
如需了解详情,请参阅 TLS/SSL 有关如何使用 TLS 的信息。
决定如何在虚拟主机中指定密钥库和信任库名称
在将虚拟主机配置为支持 TLS 时,您可以使用 reference。引用是包含密钥库名称或 而不是直接指定密钥库或信任库名称,如下所示:
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://myTestKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo>
使用引用的优势在于 虚拟主机使用的密钥库,通常是因为当前密钥库中的证书是 即将过期。更改引用的值不需要重启 边缘路由器如需了解更多详情,请参阅使用引用 详细了解如何创建和修改参考文件。
您只能使用密钥库和信任库的引用;而不能使用别名的引用。更改密钥库的引用时,确保证书的别名与旧密钥库中的别名相同。
使用对密钥库和信任库的引用的限制
在使用对密钥库和 信任库:
- 如果您支持 SNI 和 在 Apigee 路由器上终止 SSL
- 如果您在 Apigee 路由器前面有一个负载平衡器,并且终止了 则您无法在虚拟主机中使用密钥库和信任库引用。
为双向 TLS 创建虚拟主机
如需启用双向 TLS,请将 <ClientAuthEnabled>
元素设为
true
,并指定受信任证书存储区
结合使用 reference 和 <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/SSL 有关如何使用 TLS 的信息。
修改虚拟主机
拥有付费账号和所有 Edge for Private Cloud 客户的 Cloud 客户可以使用 <ph type="x-smartling-placeholder"></ph> 更新 Virtual Host API 以更新虚拟主机。利用此 API,您可以设置 虚拟主机属性参考中所述的虚拟主机的属性。
使用 更新 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 代理以使用 主机。
使用 <ph type="x-smartling-placeholder"></ph> 删除虚拟主机 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。
适用于私有云客户的 Edge 使用
http://ms-ip:9000
(本地),其中 ms-ip 是 管理服务器节点的 IP 地址或 DNS 名称。 - 选择管理 >虚拟主机。
- 选择环境,例如 prod 或 test。
虚拟 为环境定义的主机。如果虚拟主机配置为使用密钥库或信任库, 点击显示可查看更多信息。
如果虚拟主机已配置为使用 TLS/SSL, 虚拟主机。这意味着 TLS/SSL 证书、密钥和证书链已上传到 边缘并与虚拟主机关联。若要查看有关可用广告资源的 证书:
- 选择管理 >环境 >TLS 密钥库中。
- 选择环境(通常是
prod
或test
)。 - 展开密钥库以查看证书。
传统 Edge(私有云)
如需使用传统 Edge 界面查看有关虚拟主机的信息,请执行以下操作:
- 登录
http://ms-ip:9000
,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 选择管理 >虚拟主机。
- 选择环境,例如 prod 或 test。
- 点击 Virtual Hosts 标签页。
虚拟 为环境定义的主机。如果虚拟主机配置为使用密钥库或信任库, 点击显示可查看更多信息。
如果虚拟主机已配置为使用 TLS/SSL, 虚拟主机。这意味着 TLS/SSL 证书、密钥和证书链已上传到 边缘并与虚拟主机关联。若要查看有关可用广告资源的 证书:
- 选择管理 >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" ]
要查看有关特定虚拟主机的信息,请使用 获取 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 代理关联的虚拟主机的 name:
<HTTPProxyConnection> <BasePath>/v1/my/proxy/basepath</BasePath> <VirtualHost>secure</VirtualHost> <VirtualHost>default</VirtualHost> </HTTPProxyConnection>
例如,<VirtualHost>secure</VirtualHost>
表示
客户端可以使用“安全”的虚拟主机。
在以下情况下,您通常需要修改与 API 代理关联的虚拟主机:
- 您创建了一个新的虚拟主机并拥有现有的 API 代理。您必须修改现有的 API 以添加新虚拟主机。
- 您创建了一个无法通过特定虚拟主机访问的新 API 代理。 您必须修改 API 代理才能将该虚拟主机从其定义中移除。
要修改与 API 代理关联的虚拟主机,请执行以下操作:
-
访问 API 代理编辑器(如下所述)。
Edge
如需使用 Edge 界面访问 API 代理编辑器,请执行以下操作:
- 登录 apigee.com/edge。
适用于私有云客户的 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。
- 点击开发标签页。
- 在代理端点下,选择默认。
- 在代码区域中:
<ph type="x-smartling-placeholder">
- </ph>
- 移除以下项的所有
<VirtualHost>
元素: 虚拟主机。 - 添加新的
<VirtualHost>
元素 替换为新虚拟主机的名称。例如,如果新虚拟主机的名称为 MyVirtualHost 中,添加以下标记:
<HTTPProxyConnection> <BasePath>/v1/my/proxy/basepath</BasePath> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> <VirtualHost>MyVirtualHost</VirtualHost> </HTTPProxyConnection>
- 移除以下项的所有
- 保存 API 代理。如果 API 代理已部署,则保存该代理后,系统会使用新的 设置。
设置 API 代理的 Edge 界面
Edge 界面根据虚拟主机中的设置显示 API 代理的网址 与部署代理的位置相对应。此显示屏可能包含 虚拟主机。
在大多数情况下,Edge 界面中显示的网址是用于将外部 向代理发送的请求不过,对于某些配置,显示的网址不正确。对于 以下任何一种配置都会导致系统无法 对应于向代理发出外部请求的实际网址:
- SSL 终止在负载平衡器发生
- 负载平衡器和 Apigee 路由器之间发生端口映射
- 配置了路径重写的负载平衡器
Edge 支持虚拟主机上名为 <BaseUrl>
的属性,该属性
您可以替换 Edge 界面显示的网址。这里的示例显示了
<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”。