Edge for Private Cloud v. 4.17.05
Edge 上的虚拟主机定义了公开 API 代理的网域和 Edge 路由器端口,以及应用用于访问 API 代理的网址。虚拟主机还定义了是通过 HTTP 协议还是通过加密的 HTTPS 协议访问 API 代理。
在 Edge 初始配置过程中,您必须创建组织、环境和虚拟主机。Edge 提供了 setup-org 命令,以便新用户更轻松地完成此过程。
创建虚拟主机时,您必须指定以下信息:
- 虚拟主机的名称,用于在 API 代理中引用该虚拟主机。
- 虚拟主机的路由器上的端口。通常,这些端口从 9001 开始,每个新的虚拟主机递增 1。
- 虚拟主机的主机别名。通常是虚拟主机的 DNS 名称。
例如,在传递给 setup-org 命令的配置文件中,您可以将此信息指定为:
# Specify virtual host information. VHOST_PORT=9001 VHOST_NAME=default # If you have a DNS entry for the virtual host. VHOST_ALIAS=myapis.apigee.net
Edge 路由器会将传入请求的 Host 标头与可用主机别名列表进行比较,以确定处理请求的 API 代理。通过虚拟主机发出请求时,请指定与虚拟主机的主机别名匹配的域名,或指定路由器的 IP 地址和包含主机别名的 Host 标头。
例如,如果您在端口 9001 上创建了主机别名为 myapis.apigee.net 的虚拟主机,则通过该虚拟主机向 API 发出的 cURL 请求可以使用以下形式之一:
- 如果您有 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 命令、大多数浏览器和许多其他实用程序会自动将 Host 标头与网域附加为请求的一部分,因此您实际上可以使用以下形式的 cURL 命令:
curl http://<routerIP>:9001/{proxy-base-path}/{resource-path}
虚拟主机没有 DNS 条目时的选项
如果您没有 DNS 条目,一种方法是将主机别名设置为路由器的 IP 地址和虚拟主机的端口,格式为 <routerIP>:port。例如:
VHOST_ALIAS=192.168.1.31:9001
然后,您可以使用以下形式发出 curl 命令:
curl http://<routerIP>:9001/{proxy-base-path}/{resource-path} 此选项是首选,因为它非常适合 Edge 界面。
如果您有多个路由器,请为每个路由器添加一个主机别名,并指定每个路由器的 IP 地址和虚拟主机的端口:
# Specify the IP and port of each router as a space-separated list enclosed in quotes: # VHOST_ALIAS="192.168.1.31:9001 192.168.1.32:9001"
或者,您也可以将主机别名设置为某个值,例如 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}在虚拟主机中使用受保护的端口
如果您要创建将路由器绑定到受保护端口(例如小于 1000 的端口号)的虚拟主机,则必须将路由器配置为以有权访问这些端口的用户身份运行。默认情况下,路由器以用户“apigee”身份运行,该用户无权访问特权端口。
如需以其他用户身份运行路由器,请执行以下操作:
- 以 root 身份创建文件 /opt/apigee/etc/edge-router.d/RUN_USER.sh。
- 将以下条目添加到该文件中:
RUN_USER=root
如果您不想以 root 身份运行 Router,请指定有权访问该端口的用户。 - 保存文件。
- 如果您指定了 root 以外的用户,请将文件的所有者更改为该用户:
> chown USER:USER /opt/apigee/etc/edge-router.d/RUN_USER.sh - 重启路由器:
> /opt/apigee/apigee-service/bin/apigee-service edge-router restart