设置虚拟主机

Edge for Private Cloud v. 4.17.01

Edge 上的虚拟主机定义公开 API 代理的网域和 Edge Router 端口,进而定义应用用于访问 API 代理的网址。虚拟主机还指定是使用 HTTP 协议还是加密的 HTTPS 协议访问 API 代理。

在 Edge 新手入门流程中,您必须创建组织、环境和虚拟主机。Edge 提供了 setup-org 命令,让新用户更轻松地完成此过程。

创建虚拟主机时,必须指定以下信息:

  • 您在 API 代理中引用它时使用的虚拟主机的名称
  • 路由器上用于虚拟主机的端口。通常,这些端口从 9001 开始,每增加一个虚拟主机,递增 1。
  • 虚拟主机的主机别名。通常是虚拟主机的 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 地址,并在主机标头中传递主机别名。

    注意:curl 命令、大多数浏览器以及许多其他实用程序都会自动在请求中附加包含域名的 Host 标头,因此您可以实际使用采用以下格式的 curl 命令


    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}

在虚拟主机中使用受保护的端口

如果您要创建一个将路由器绑定到受保护端口(例如小于 1024 的端口号)的虚拟主机,则必须将路由器配置为以有权访问这些端口的用户身份运行。默认情况下,路由器以用户“apigee”运行,该用户无权访问特权端口。

如需以其他用户身份运行路由器,请执行以下操作:

  1. 以根用户身份创建文件 /opt/apigee/etc/edge-router.d/RUN_USER.sh
  2. 将以下条目添加到该文件中:
    RUN_USER=root
    如果您不想以 root 身份运行路由器,请指定有权访问该端口的用户。
  3. 保存文件。
  4. 如果您指定了除 root 以外的用户,请将文件所有者更改为该用户:
    > chown USER:USER /opt/apigee/etc/edge-router.d/RUN_USER.sh
  5. 重启路由器:
    > /opt/apigee/apigee-service/bin/apigee-serviceedge-router restart