您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
在 Edge 中,路由器负责处理所有传入的 API 流量。 这意味着,所有对 API 代理的 HTTP 和 HTTPS 请求都先由 Edge 路由器处理。
借助虚拟主机,您可以在服务器上托管多个域名。 对于 Edge,服务器对应于 Edge 路由器。通过在路由器上定义多个虚拟主机, 路由器可以处理针对多个域名发出的 API 请求。
Edge 上的虚拟主机定义了访问协议(HTTP 或 HTTPS)、开放的路由器端口和主机 别名。主机别名通常是映射到路由器 IP 地址的 DNS 域名。
例如,下图显示了一个包含两个虚拟主机定义的路由器:

第一个虚拟主机处理网域 domainName1 上的 HTTPS 请求,第二个虚拟主机处理 domainName2 上的 HTTP 请求。
在向 API 代理发出请求时,路由器会将传入请求的 Host 标头与所有虚拟主机定义的主机别名列表进行比较,以确定哪个虚拟
主机处理请求。
虚拟主机定义简介
虚拟主机包含以下信息:
- 虚拟主机的内部名称 。您可以使用该名称在 API 代理中引用虚拟 主机,并在配置虚拟主机时使用该名称。
- 虚拟主机的主机别名 。主机别名通常是映射到路由器 IP 地址的 DNS
域名。API 代理请求的
Host标头必须包含虚拟主机的主机别名。 - 路由器上的开放端口 。
- 是否启用 TLS(HTTPS 访问)或未启用 TLS(HTTP 访问)。
例如,您可以在创建虚拟主机时指定以下信息:
- name = myvhost
- host alias = apis.acme.com
- port = 443
- 已启用 TLS
根据上述虚拟主机的设置,对 API 代理的请求采用以下形式:
https://apis.acme.com/{proxy-base-path}/{resource-path}其中:
- {proxy-base-path} 是在创建 API 代理时定义的,并且对于每个 API 代理都是唯一的。
例如:
https://apis.acme.com/characters
- {resource-path} 是可通过 API 代理访问的资源的路径。例如:
https://apis.acme.com/characters/coyote https://apis.acme.com/characters/roadrunner
Edge for Cloud 中的虚拟主机简介
每个 Edge 组织都会自动包含两个环境(test
和 prod)、每个环境中的两个虚拟主机(default 和 secure),
以及每个主机别名的 DNS 记录。
每个 Apigee 提供的虚拟主机的主机别名都包含 组织 和 环境 的名称,如下表所示:
| 环境 | 虚拟主机名 | 主机别名 | 端口 | 已启用 TLS |
|---|---|---|---|---|
| prod | 默认 | {org-name}-prod.apigee.net |
80 | 否 |
| 安全 | {org-name}-prod.apigee.net |
443 | 是 | |
| 测试 | 默认 | {org-name}-test.apigee.net |
80 | 否 |
| 安全 | {org-name}-test.apigee.net |
443 | 是 |
例如,在 prod 环境中,名为“myorg”的组织的默认域名为“myorg-prod.apigee.net”。因此,如需访问该组织中的 API 代理,您可以使用以下形式的网址:
http://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
https://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}Apigee 付费方案 :包含“apigee.net”的域名可能不是您想要向客户公开的域名。您可以使用 DNS 条目和 CNAME 记录将域名映射到 Edge 上的组织。您还必须创建一个虚拟主机,并将主机别名设置为该 域名。这样,开发者就可以通过特定于您公司的域名访问您的 API。
以下是 Edge 中自定义网域的示例:
https://apis.acme.com/{proxy-base-path}/{resource-path}Edge for Private Cloud 中的虚拟主机简介
安装 Apigee Edge for Private Cloud 后,系统不会为您创建默认组织、 环境或虚拟主机。完成 Edge 安装过程后, 您的第一个操作通常是通过 “新手入门”流程创建组织、环境和虚拟主机。
如需执行新手入门,请在 Edge 管理服务器节点上运行以下命令:
/opt/apigee/apigee-service/bin/apigee-service apigee-provision setup-org -f configFile
其中 configFile 包含创建 用户、组织、环境和虚拟主机所需的信息。
例如,您可以创建:
- 您选择的用户,以充当组织管理员
- 名为
example的组织 - 组织中名为
prod的环境 - 环境中名为
default的虚拟主机,该虚拟主机允许通过端口 9001 进行 HTTP 访问 - 用于访问路由器的 DNS 名称的主机别名,或路由器 IP 地址和
虚拟主机端口(格式为
IP:9001)。
您稍后可以向本地版 Edge 添加任意数量的组织、环境和虚拟主机。 如需了解详情,请参阅:
虚拟主机在 Edge 路由器上打开。因此,您必须确保为虚拟主机指定的端口 在路由器上处于打开状态。您可以使用以下形式的命令打开端口:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT --verbose
运行该命令后,您可以使用以下形式的网址访问 API:
http://<router-ip>:9001/{proxy-base-path}/{resource-path}通常,您不会使用 IP 地址和 端口号向客户发布 API。而是为路由器和端口定义 DNS 条目。例如:
http://myAPI.myCo.com/{proxy-base-path}/{resource-path}定义 DNS 条目时,您还必须创建一个虚拟主机,其主机别名与 DNS 条目的域名 匹配。在上面的示例中,您可以在创建虚拟主机时指定主机别名 myAPI.myCo.com。
主机别名和 DNS 名称简介
您为虚拟主机设置的一个属性是主机别名。 主机别名通常是虚拟主机的 DNS 名称。设置主机别名的方式取决于您的 Edge 安装类型:Cloud 或 Private Cloud。
Edge for Cloud 中的主机别名和 DNS 名称
在 Edge for Cloud 中,首次创建 Edge 组织时,Apigee 会自动
创建两个环境(test
和 prod)、每个环境中的
两个虚拟主机(default 和 secure),以及每个
虚拟主机的 DNS 记录。
虚拟主机的主机别名包含组织和环境的名称。 因此,通过虚拟主机发出的请求采用以下形式:
http://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}https://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}http://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}https://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}
通常,您希望创建使用您的域名的虚拟主机,而不是使用
默认 apigee.net 域名。为此,您必须先创建自己的 DNS 条目和 CNAME 记录。
下图显示了 Edge 处理 API 请求的典型配置:

在此示例中:
- api.acme.com 是您所需的域名。
- 您定义 DNS 条目和 CNAME 记录,以将 api.acme.com 指向 acme-prod.apigee.net。
- 请求包含
Host标头,路由器使用该标头确定处理请求的虚拟主机。
在此示例中,您可以在虚拟主机定义中指定以下信息:
- name = myvhost
- host alias = apis.acme.com
- port = 443
- 启用 TLS 访问
如需了解详情,请参阅为 Cloud 配置虚拟主机。
Edge for Private Cloud 中的主机别名 和 DNS 名称
与 Edge for Cloud 一样,您可以创建使用自己的域名作为主机 别名的虚拟主机。然后,您可以创建自己的 DNS 条目和 CNAME 记录来访问这些虚拟主机。
Cloud 和 Private Cloud 之间的区别之一是,在 Cloud 中,Apigee 会自动为您的组织创建 DNS 名称,格式如下:
- name=default:
http://{org-name}-{env-name}.apigee.net(路由器端口 80) - name=secure:
https://{org-name}-{env-name}.apigee.net(路由器端口 443)
在 Edge for Private Cloud 中,您必须为路由器的 IP 地址和端口 创建 DNS 条目。
例如,您可以在虚拟主机定义中指定以下信息:
- name = myvhost
- host alias = apis.acme.com
- port = 9001
- 启用 TLS 访问
下图显示了 Edge 处理 API 请求的典型配置:

在此示例中:
- api.acme.com 是您所需的域名。
- 您定义 DNS 条目和 CNAME 记录,以将 api.acme.com 指向路由器的 IP 地址和端口。
- 请求包含
Host标头,路由器使用该标头确定处理请求的虚拟主机。
如需了解详情,请参阅为 Private Cloud 配置虚拟主机。
主机别名和通配符
您可以在主机别名中添加“*”通配符。“*”通配符只能位于主机别名的开头(第一个“.”之前),并且不能与其他字符混用。
以下是使用通配符的有效主机别名的示例:
*.example.com
以下示例无效:
www.*.example.com w*.example.com
在虚拟主机别名中使用通配符可让
API 代理处理针对多个子网域(例如
alpha.example.com、beta.example.com或
live.example.com)的调用。使用通配符别名还有助于您减少每个环境使用的虚拟
主机数量,以符合产品
限制,因为带有通配符的虚拟主机仅计为一个虚拟主机。
虚拟主机的 TLS 证书必须在证书的 CN 名称中包含匹配的通配符。
例如,*.example.com。
虚拟主机属性简介
在 Edge 中,虚拟主机由 XML 对象表示。例如,以下 XML 对象定义了一个虚拟主机:
<VirtualHost name="vhostName">
<HostAliases>
<HostAlias>hostAlias</HostAlias>
</HostAliases>
<Interfaces>
<!-- Private Cloud only -->
<Interface>interfaceName</Interface>
<Port>portNumber</Port>
<BaseURL>http://myCo.com<</BaseUrl>
<OCSPStapling>off</OCSPStapling>
<RetryOptions/>
<SSLInfo>
<Enabled>trueFalse</Enabled>
<ClientAuthEnabled>trueFalse</ClientAuthEnabled>
<KeyStore>ref://keystoreRef</KeyStore>
<KeyAlias>keyAlias</KeyAlias>
<TrustStore>ref://truststoreRef</TrustStore>
<IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
</SSLInfo>
<Properties>
<Property name="proxy_read_timeout">timeout</Property>
<Property name="keepalive_timeout">timeout</Property>
<Property name="proxy_request_buffering">onOff</Property>
<Property name="proxy_buffering">onOff</Property>
<Property name="ssl_protocols">protocolList</Property>
<Property name="ssl_ciphers">cipherList</Property>
</Properties>
</VirtualHost>您可以设置的属性列表取决于您使用的是 Edge for Cloud 还是 Edge for Private Cloud。如果您使用的是 Edge for Private Cloud,则可用属性列表还取决于您的 Edge 版本。如需详细了解虚拟主机的所有属性,请参阅 虚拟主机属性参考。
如需详细了解如何为特定版本的 Edge 创建虚拟主机,请参阅: