您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档。 信息
在 Edge 中,路由器负责处理所有传入的 API 流量。这意味着向 API 代理发出的所有 HTTP 和 HTTPS 请求都首先由边缘路由器处理。
通过虚拟主机,您可以在一台服务器上托管多个域名。 对于 Edge,该服务器对应于一个边缘路由器。通过在路由器上定义多个虚拟主机,路由器可以处理对多个域名的 API 请求。
Edge 上的虚拟主机定义访问协议(HTTP 或 HTTPS)、开放路由器端口和主机别名。主机别名通常是映射到路由器 IP 地址的 DNS 域名。
例如,下图显示了一个具有两个虚拟主机定义的路由器:
第一个虚拟主机处理网域 domainName1 上的 HTTPS 请求,第二个虚拟主机处理 domainName2 上的 HTTP 请求。
在向 API 代理发出请求时,路由器会将传入请求的 Host
标头与所有虚拟主机定义的主机别名列表进行比较,以确定由哪个虚拟主机处理请求。
虚拟主机定义简介
虚拟主机包含以下信息:
- 虚拟主机的内部名称。您可以在 API 代理中引用虚拟主机以及在配置虚拟主机时使用该名称。
- 虚拟主机的主机别名。通常,主机别名是映射到路由器上的 IP 地址的 DNS 域名。API 代理请求的
Host
标头必须包含虚拟主机的主机别名。 - 路由器上的开放端口。
- 表示是否启用了 TLS(HTTPS 访问)。
例如,您可以在创建虚拟主机时指定以下信息:
- name = myvhost
- 主机别名 = apis.acme.com
- 端口 = 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
关于适用于 Cloud 的 Edge 中的虚拟主机
每个边缘组织都会自动包含两个环境(test
和 prod
)、每个环境中的两个虚拟主机(默认和安全)以及每个主机别名的 DNS 记录。
Apigee 提供的每个虚拟主机的主机别名都包含组织和环境的名称,如下表所示:
环境 | 虚拟主机名 | 主机别名 | Port(端口) | 已启用 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”的域名可能不是您要向客户公开的域名。您可以在 Edge 上使用 DNS 条目和 CNAME 记录将域名映射到您的组织。您还必须创建一个虚拟主机,并将主机别名设置为该域名。这样一来,开发者便可以通过您公司的专用网域访问您的 API。
以下是 Edge 中的自定义网域的示例:
https://apis.acme.com/{proxy-base-path}/{resource-path}
关于适用于私有云的 Edge 上的虚拟主机
安装适用于私有云的 Apigee 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。如需了解详情,请参阅以下主题:
虚拟主机在边缘路由器上打开。因此,您必须确保为虚拟主机指定的端口在路由器上是打开的。您可以使用下方形式的命令打开一个端口:
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 中适用于 Cloud 的主机别名和 DNS 名称
在 Edge for the Cloud 中,当您首次创建 Edge 组织时,Apigee 会自动创建两个环境(test
和 prod
)、每个环境中的两个虚拟主机(默认和安全),以及每个虚拟主机的 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.comapi.acme.com 是您所需的域名。
- 您需要定义一个 DNS 条目和 CNAME 记录,将 api.acme.com 指向 acme-prod.apigee.net。
- 请求包含
Host
标头,路由器使用该标头来确定处理请求的虚拟主机。
在此示例中,您将在虚拟主机定义中指定以下信息:
- name = myvhost
- 主机别名 = apis.acme.com
- 端口 = 443
- 启用 TLS 访问
如需了解详情,请参阅为 Cloud 配置虚拟主机。
Edge 中适用于私有云的主机别名和 DNS 名称
与适用于云端的 Edge 一样,您可以创建使用您自己的域名作为主机别名的虚拟主机。然后,您可以创建自己的 DNS 条目和 CNAME 记录来访问这些虚拟主机。
Cloud 和私有云之间的一个不同之处在于,在 Cloud Apigee 中,它会自动为您的组织创建 DNS 名称,其形式如下:
- name=default:
http://{org-name}-{env-name}.apigee.net
(路由器端口 80) - name=secure:
https://{org-name}-{env-name}.apigee.net
(路由器端口 443)
在 Private Cloud 的 Edge 中,您必须创建路由器的 IP 地址和端口的 DNS 条目。
例如,您可以在虚拟主机定义中指定此信息:
- name = myvhost
- 主机别名 = apis.acme.com
- 端口 = 9001
- 启用 TLS 访问
下图显示了 Edge 处理 API 请求的典型配置:
在此示例中:
- api.acme.comapi.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 还是适用于私有云的 Edge。如果您为私有云使用 Edge,则可用属性列表还取决于您的 Edge 版本。如需查看虚拟主机所有属性的完整说明,请参阅虚拟主机属性参考文档。
如需详细了解如何为特定 Edge 版本创建虚拟主机,请参阅: