配置虚拟主机

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

拥有付费账号和所有 Edge(面向 Private Cloud 客户)的 Cloud 客户 可以在组织中创建虚拟主机。用户 创建虚拟主机的角色必须为组织管理员,或者 拥有修改虚拟主机权限的自定义角色。其他角色的用户没有 授权创建虚拟主机。

观看视频介绍虚拟主机。

创建虚拟主机

使用以下基本过程创建虚拟主机。 实际使用的流程取决于您是 Cloud 客户还是 Private Cloud 客户, 以及您是否启用了 TLS:

  1. 为您的公开网域创建 DNS 条目和 CNAME 记录。
  2. 如果在虚拟主机上启用 TLS:
    1. 按照下述步骤创建和配置密钥库: 密钥库和信任库
    2. 将您的证书和密钥上传到密钥库。确保您的 cert 与您要用于虚拟主机的主机别名匹配。
    3. 使用 Edge 界面或 API 创建对密钥库的引用。参考 将密钥库的名称和引用类型指定为 KeyStore。请参阅 使用参考文档 详细了解如何创建和修改参考文件。
    4. 如果您要执行双向 TLS,请创建一个信任库,上传证书, 并创建对信任库的引用。按照所述的过程创建信任库 此处:密钥库和信任库
  3. 使用 创建 虚拟主机 API。如果启用 TLS,请务必指定正确的密钥库引用, 信任库引用和密钥别名。
  4. 如果您已有 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 界面中的虚拟主机:

  1. 登录 apigee.com/edge

    适用于私有云客户的 Edge 使用 http://ms-ip:9000(本地),其中 ms-ip 是 管理服务器节点的 IP 地址或 DNS 名称。

  2. 在左侧导航栏中,依次选择 Admin > Virtual Hosts
  3. 选择环境,例如 prodtest
    虚拟 系统会显示为环境定义的主机。
  4. 选择 + 虚拟主机以创建虚拟主机,或者选择一个 对其进行修改

为 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 界面查看有关虚拟主机的信息,请执行以下操作:

  1. 登录 apigee.com/edge

    适用于私有云客户的 Edge 使用 http://ms-ip:9000(本地),其中 ms-ip 是 管理服务器节点的 IP 地址或 DNS 名称。

  2. 选择管理 >虚拟主机
  3. 选择环境,例如 prodtest

    虚拟 为环境定义的主机。如果虚拟主机配置为使用密钥库或信任库, 点击显示可查看更多信息。

如果虚拟主机已配置为使用 TLS/SSL, 虚拟主机。这意味着 TLS/SSL 证书、密钥和证书链已上传到 边缘并与虚拟主机关联。若要查看有关可用广告资源的 证书:

  1. 选择管理 >环境 >TLS 密钥库中。
  2. 选择环境(通常是 prodtest)。
  3. 展开密钥库以查看证书。

传统 Edge(私有云)

如需使用传统 Edge 界面查看有关虚拟主机的信息,请执行以下操作:

  1. 登录 http://ms-ip:9000,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。
  2. 选择管理 >虚拟主机
  3. 选择环境,例如 prodtest
  4. 点击 Virtual Hosts 标签页。

    虚拟 为环境定义的主机。如果虚拟主机配置为使用密钥库或信任库, 点击显示可查看更多信息。

    “虚拟主机”标签页会显示名称、端口和
                 别名等

如果虚拟主机已配置为使用 TLS/SSL, 虚拟主机。这意味着 TLS/SSL 证书、密钥和证书链已上传到 边缘并与虚拟主机关联。若要查看有关可用广告资源的 证书:

  1. 选择管理 >TLS 证书
  2. 选择环境(通常是 prodtest)。
  3. 展开密钥库以查看证书。

正在查看 使用 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 代理关联的虚拟主机,请执行以下操作:

  1. 访问 API 代理编辑器(如下所述)。

    Edge

    如需使用 Edge 界面访问 API 代理编辑器,请执行以下操作:

    1. 登录 apigee.com/edge

      适用于私有云客户的 Edge 使用 http://ms-ip:9000(本地),其中 ms-ip 是 管理服务器节点的 IP 地址或 DNS 名称。

    2. 选择开发 >API 代理
    3. 从列表中选择您要修改的 API 代理。

    传统 Edge(私有云)

    如需使用传统版 Edge 界面访问 API 代理编辑器,请执行以下操作:

    1. 登录 http://ms-ip:9000,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。
    2. 选择 API >API 代理
    3. 从列表中选择您要修改的 API 代理。
  2. 点击开发标签页。
  3. 代理端点下,选择默认
  4. 在代码区域中: <ph type="x-smartling-placeholder">
      </ph>
    1. 移除以下项的所有 <VirtualHost> 元素: 虚拟主机。
    2. 添加新的 <VirtualHost> 元素 替换为新虚拟主机的名称。例如,如果新虚拟主机的名称为 MyVirtualHost 中,添加以下标记:
      <HTTPProxyConnection>
        <BasePath>/v1/my/proxy/basepath</BasePath>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
        <VirtualHost>MyVirtualHost</VirtualHost>
      </HTTPProxyConnection>
  5. 保存 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”。