您正在查看 Apigee Edge 文档。
请查看 Apigee X 文档。
在本地安装中,您可以完全控制虚拟主机。您可以在任何环境中使用 TLS 为任何组织创建虚拟主机。
本文档介绍如何创建简单的虚拟主机。即,它不支持 TLS。如需查看更多示例(包括关于创建支持 TLS 的虚拟主机的示例),请参阅为私有云配置对 API 的 TLS 访问。
了解详情:
主机别名简介
创建虚拟主机时,您必须指定虚拟主机的主机别名。这通常是虚拟主机的 DNS 名称。
在确定处理请求的 API 代理的过程中,边缘路由器会将传入请求的 Host
标头与可用主机别名列表进行比较。通过虚拟主机发出请求时,请指定与虚拟主机的别名匹配的域名,或指定路由器的 IP 地址和包含主机别名的 Host
标头。
例如,如果您在端口 9001 上创建了主机别名为 myapis.apigee.net 的虚拟主机,则通过该虚拟主机向 API 发出的 c网址 请求可以使用以下形式之一:
如果您有 myapis.apigee.net 的 DNS 条目,请执行以下操作:
curl http://myapis.apigee.net:9001/proxy-base-path/resource-path
如果您没有 myapis.apigee.net 的 DNS 条目,请执行以下操作:
curl http://routerIP:9001/proxy-base-path/resource-path -H 'host:myapis.apigee.net'
在此表单中,您可以指定路由器的 IP 地址,并在
:Host
标头中传递主机别名。curl http://routerIP:9001/proxy-base-path/resource-path
没有虚拟主机的 DNS 条目时的选项
没有 DNS 条目时,可以将主机别名设置为路由器和虚拟主机的 IP 地址,如 routerIP:port。例如:
192.168.1.31:9001
当您按照以下格式创建 curl
命令时:
curl http://routerIP:9001/proxy-base-path/resource-path
此选项首选,因为它与 Edge 界面搭配使用。
如果您有多个路由器,请为每个路由器添加主机别名,并指定每个路由器的 IP 地址和虚拟主机的端口。
或者,您可以将主机别名设置为值,例如 temp.hostalias.com。然后,您必须为每个请求传递 Host
标头:
curl -v http://routerIP:9001/proxy-base-path/resource-path -H 'Host: temp.hostalias.com'
或者,将主机别名添加到 /etc/hosts 文件。例如,将下面这行代码添加到 /etc/hosts:
192.168.1.31 temp.hostalias.com
然后,您可以发出请求,就像您有 DNS 条目一样:
curl -v http://myapis.apigee.net:9001/proxy-base-path/resource-path
关于适用于私有云 4.16.01 及更高版本的 Edge 上的虚拟主机端口
创建虚拟主机时,您需要指定虚拟主机使用的路由器端口。例如,端口 9001。
对于版本 4.16.01 及更高版本的 Apigee,默认情况下,路由器以用户“Apigee”的形式运行,该端口无法访问特权端口(通常为端口 1024 及更低版本)。如果您要创建将路由器绑定到受保护的端口的虚拟主机,就必须将路由器配置为以有权访问这些端口的用户的身份运行。如需了解详情,请参阅设置虚拟主机。
创建虚拟主机
本部分介绍如何为适用于私有云的 Apigee Edge 创建虚拟主机。请注意,如需创建新的虚拟主机,您必须是组织管理员。
您可以使用 API 或 Edge 界面为 Apigee Edge for Private Cloud 创建虚拟主机。以下部分将对此进行介绍。
使用浏览器创建虚拟主机
本部分介绍如何使用浏览器创建虚拟主机(仅限 Edge 界面),
如需在 Edge 界面中创建新的虚拟主机,请执行以下操作:
- 登录边缘管理界面。
- 选择管理 > 虚拟主机。
从下拉列表中选择环境。
Edge 会显示该环境的虚拟主机列表。
- 如需创建新的虚拟主机,请选择 + 虚拟主机。
Edge 会显示 Create Virtual Host 表单。
您也可以点击现有虚拟主机的名称来进行修改。
- 定义新的虚拟主机。请注意,基准网址字段必须包含协议(即,在字段值前面添加“http://”或“https://”)。
另请注意:
- 您可以创建的虚拟主机数量没有限制
- TLS 是可选的,可以是版本 1.0、1.1 或 1.2
- 虚拟主机的端口可以配置
- 点击创建按钮以保存新的虚拟主机。
使用 API 创建虚拟主机
要使用 API 创建虚拟主机,请创建一个用于定义虚拟主机的 XML 对象。例如,以下 XML 对象定义了使用 HTTP 协议的虚拟主机:
<VirtualHost name="myVHost"> <HostAliases> <HostAlias>DNS_name_or_IP:port</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> </VirtualHost>
请注意,虚拟主机包含 name
属性。您可以使用 name
属性的值将 API 代理配置为使用虚拟主机。
然后,您可以向此虚拟主机发出请求,以访问 API 代理:
http://routerIP:port/proxy-base-path/resource-path
https://routerIP:port/proxy-base-path/resource-path
其中:
http
或https
:如果虚拟主机已配置为支持 TLS,请使用 HTTPS。如果虚拟主机不支持 TLS,请使用 HTTP。- routerIP:port 是虚拟主机的 IP 地址和端口号。
- proxy-base-path 和 resource-path 是在您创建 API 代理时定义的。
通常情况下,您无需向具有 IP 地址和端口号的客户发布 API。而是为路由器和端口定义 DNS 条目。例如:
http://api.myCompany.com/proxy-base-path/resource-path https://api.myCompany.com/proxy-base-path/resource-path
如果您定义 DNS 条目,则必须为虚拟主机创建与 DNS 条目域名匹配的主机别名。主机别名必须与客户端在 Host
标头中传递的字符串匹配。
在上面的示例中,您将指定 api.myCompany.com
的主机别名。
<VirtualHost name="myVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> </VirtualHost>
如需创建使用 HTTP 协议的虚拟主机,请执行以下操作:
- 使用创建虚拟主机 API 创建虚拟主机,其中 ms-IP 是管理服务器节点的 IP 地址或域名:
$ curl -X POST -H "Content-Type:application/xml" \ http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \ -d '<VirtualHost name="newVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> </VirtualHost>' \ -u sysAdminEmail:password
- 为与主机别名匹配的虚拟主机创建 DNS 记录。
- 如果您有任何现有的 API 代理,请将虚拟主机添加到代理端点中的
<HTTPConnection>
元素。虚拟主机会自动添加到所有新的 API 代理。 请参阅 将 API 代理配置为使用虚拟主机。
修改虚拟主机
如需修改虚拟主机,请执行以下操作:
-
使用 更新虚拟主机 API 更新虚拟主机,其中
<ms-IP>
是管理服务器节点的 IP 地址或域名。您必须在请求正文中指定虚拟主机的完整定义,而不仅仅是您要更改的元素。在此示例中,您将虚拟主机的端口号从 9008 更改为 9009:curl -X PUT -H "Content-Type:application/xml" \ http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \ -d '<VirtualHost name="newVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9009</Port> </VirtualHost>' \ -u email:password
-
仅适用于专用 Cloud 4.16.01 和 4.16.05 版本的 Edge:如果您修改现有虚拟主机,并且启用 TLS 或停用 TLS 而不更改端口号,则:
停止路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router stop
删除
/opt/nginx/conf.d
中的所有文件:rm -f /opt/nginx/conf.d/*
启动路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router start
- 针对所有路由器重复上述步骤。