虚拟主机属性参考文档

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。
info

虚拟主机表示法

您用于定义虚拟主机的 XML 对象取决于您的 Edge 版本:Cloud 或 Private Cloud。

如果您是 Private Cloud 客户,则必须确保您使用的是适用于 您的 Edge 版本的正确 XML。

Cloud 和 Private Cloud 4.17.01 及更高版本

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <BaseUrl>http://myCo.com</BaseUrl>
    <OCSPStapling>offOn</OCSPStapling>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <!-- Private Cloud only -->
        <Interface>interfaceName</Interface>
    </Interfaces>
    <RetryOptions>
        <RetryOption>option</RetryOption>
    </RetryOptions>
    <ListenOptions>
        <ListenOption>option</ListenOption>
    </ListenOptions>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
    <!-- UseBuiltInFreeTrialCert is for Edge Cloud only -->
    <UseBuiltInFreeTrialCert>trueFalse</UseBuiltInFreeTrialCert>
    <PropagateTLSInformation>
        <!-- PropagateTLSInformation is Alpha in the Cloud only -->
        <ConnectionProperties>trueFalse</ConnectionProperties>
        <ClientProperties>trueFalse</ClientProperties>
    </PropagateTLSInformation>
    <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>
        <!-- ssl_protocols is Private Cloud only -->
        <Property name="ssl_protocols">protocolList</Property>
        <Property name="ssl_ciphers">cipherList</Property>
    </Properties>
</VirtualHost>

Private Cloud 4.16.01 到 4.16.09

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <Interface>interfaceName</Interface>
    </Interfaces>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

Private Cloud 4.15.07 及 更早版本

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <Interface>interfaceName</Interface>
    </Interfaces>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>keystore</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>truststore</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
        <Ciphers>
             <Cipher>cipher</Cipher>
             <Cipher>cipher</Cipher>
         </Ciphers>
         <Protocols>
             <Protocol>protocol</Protocol>
             <Protocol>protocol</Protocol>
         </Protocols>
    </SSLInfo>
</VirtualHost>

虚拟主机配置属性

下表列出了用于配置虚拟主机的属性:

属性 说明 默认 必填
VirtualHost

指定虚拟主机的名称。在配置 API 代理时,您可以使用该名称引用虚拟主机 。

您可以在 name 属性中使用以下字符:A-Z0-9._\-$%。

无 是
Port

指定虚拟主机使用的端口号。确保 Edge 路由器上的端口处于打开状态。

如果您在 hostalias 元素中指定了端口,则 指定的端口号 <Port> 必须与该端口号匹配。

对于 Cloud:创建虚拟主机时,您必须指定端口 443。如果 省略,则默认情况下端口设置为 443。如果您有使用 443 以外端口的现有虚拟主机,则无法更改端口。

对于 Private Cloud 4.16.01 到 4.17.05 版本: 创建 虚拟主机时,您需要指定虚拟主机使用的路由器端口。例如,端口 9001。默认情况下,路由器以用户“apigee”的身份运行,该用户无权访问 特权端口(通常是 1024 及更低端口)。如果您想创建将路由器绑定到受保护端口的虚拟主机 ,则必须将路由器配置为以有权访问这些端口的用户的身份运行 。如需了解详情,请参阅 设置虚拟主机。

对于 Private Cloud 4.16.01 之前的版本: 路由器只能在特定端口上使用指定的证书监听每个虚拟主机的一个 HTTPS 连接。因此,如果 TLS 终结 发生在指定端口上的路由器上,则多个虚拟主机无法使用相同的端口号。

无 是
BaseUrl 替换 Edge 界面为部署到虚拟 主机显示的 API 代理网址。当您在 Edge 路由器前面有外部负载平衡器时,此属性非常有用。如需了解详情,请参阅 为 Private Cloud 配置对 API 的 TLS 访问。

BaseUrl 的值必须包含协议(即 “http://”或 “https://”)。

无 否
OCSPStapling

OCSP(在线证书状态协议)客户端向 OCSP 响应器发送状态 请求,以确定 TLS 证书是否有效。响应会指明 TLS 证书是否有效且未被撤消。

启用后,OCSP 装订功能允许 Edge(充当单向 TLS 的 TLS 服务器) 直接查询 OCSP 响应器,然后缓存响应。 然后,Edge 会将此响应返回给 TLS 客户端,或者在 TLS 握手期间将其装订到 TLS 客户端。 如需了解详情,请参阅在服务器上启用 OCSP 装订 。

必须启用 TLS 才能启用 OCSP 装订。设置为 on 即可启用。 默认值为 off。

关闭 否
HostAliases
HostAlias

路由器上虚拟主机的公开可见 DNS 名称,可以选择包含 端口号。虚拟主机的别名名称和端口号的组合对于 Edge 安装中的所有虚拟主机都必须是唯一的。这意味着,如果多个虚拟 主机具有不同的主机别名,则可以使用相同的端口号。

您必须创建与主机别名匹配的 DNS 条目和 CNAME 记录,并且主机 别名必须与客户端在 Host 标头中传递的字符串匹配。

HostAlias 中的端口号是可选的。如果您将端口指定为主机别名的一部分,则还必须使用<Port>元素指定相同的端口。或者,您可以指定两个 HostAlias 元素, 一个包含端口号,另一个不包含端口号。

您可以在同一虚拟主机定义中包含多个 HostAlias 定义 ,这些定义对应于虚拟主机的多个 DNS 条目,但不对应于多个端口。如果您需要多个端口,请创建具有不同端口的多个 虚拟主机定义。

您可以在主机别名中添加“*”通配符。“*”通配符只能位于主机别名的开头(第一个“.”之前),不能与其他字符混用。例如 *.example.com。虚拟主机的 TLS 证书必须在证书的 CN 名称中包含匹配的通配符。例如,*.example.com。 在虚拟主机别名中使用通配符可让 API 代理处理发送到多个子网域(例如 alpha.example.com、beta.example.com 或 live.example.com)的调用。使用通配符别名还有助于您在每个环境中使用更少的虚拟 主机,以符合产品 限制,因为带有通配符的虚拟主机仅算作一个虚拟主机。

对于 Cloud:如果您有使用 443 以外端口的现有虚拟主机,则无法添加或移除主机别名。

对于 Private Cloud: 如果您要使用路由器的 IP 地址(而不是 DNS 条目)设置主机别名,请为每个路由器添加单独的主机别名,并指定每个路由器的 IP 地址和虚拟主机的端口。

无 是
接口 仅适用于 Edge for Private Cloud。
Interface

指定您希望 port 绑定到的网络接口。如果省略此元素,则端口将绑定到所有接口。

例如,如需指定仅将端口绑定到 en0,请执行以下操作:

<Interfaces>
  <Interface>en0</Interface>
</Interfaces>

运行“ifconfig -a” 命令,确定系统上可用的接口。

无 所有接口
RetryOptions 适用于 Edge Cloud 和 Private Cloud 4.18.01 及 更高版本。
RetryOption

配置当消息处理器关闭时,路由器对此虚拟主机的反应。

您可以使用 <RetryOption> 指定多个值。有效值 包括:

off 停用重试,虚拟主机在收到请求后返回失败代码。
http_599 (默认)如果路由器从消息处理器收到 HTTP 599 响应,则路由器会将请求转发到下一个消息处理器。

HTTP 599 是消息 处理器在关闭时生成的特殊响应代码。消息处理器会尝试完成所有 现有请求,但对于任何新请求,它都会使用 HTTP 599 进行响应,以向 路由器发出信号,让其在下一个消息处理器上重试请求。

error 如果在与消息处理器建立连接、 向其传递请求或从中读取响应标头时发生错误,路由器 会将请求转发到下一个消息处理器。
timeout 如果在与消息处理器建立连接、 向其传递请求或从中读取响应标头时发生超时,路由器 会将请求转发到下一个消息处理器。
invalid_header 如果消息处理器返回了空响应或无效响应,路由器 会将请求转发到下一个消息处理器。
http_XXX 如果消息处理器返回了 HTTP 代码 XXX 的响应,路由器会将请求转发到下一个消息 处理器。

如果您指定了多个值,路由器会使用逻辑 OR 将它们组合在一起。

例如:

<RetryOptions>
  <RetryOption>http_599</RetryOption>
  <RetryOption>error</RetryOption>
  <RetryOption>timeout</RetryOption>
  <RetryOption>invalid_header</RetryOption>
</RetryOptions>
ListenOptions 适用于 Private Cloud 4.18.01 及更高版本,以及 Edge Cloud(通过向 Apigee Edge 支持团队发出请求)。
ListenOption

如果您在 TCP 直通模式下使用 ELB 来处理对 Edge 路由器的请求, 则路由器会将 ELB 的 IP 地址视为客户端 IP,而不是 实际的客户端 IP。如果路由器需要真实的客户端 IP, 请在proxy_protocol 上启用 ELB,以便它在 TCP 数据包中传递客户端 IP。在路由器上,您还必须将 <ListenOption> 在虚拟主机上设置为 proxy_protocol. 由于 ELB 处于 TCP 直通模式,因此您通常会在路由器上终止 TLS。 因此,您通常仅在将虚拟主机配置为使用 TLS 时,才会将其配置为使用 proxy_protocol 。

<ListenOption> 的默认值为空 字符串。

例如:

<ListenOptions>
  <ListenOption>proxy_protocol</ListenOption>
</ListenOptions>

如需稍后取消设置 <ListenOption>,请更新虚拟主机,并在更新中省略 <ListenOptions> 标记。

SSLInfo
Enabled

启用单向 TLS/SSL。您必须已定义包含证书和 私钥的密钥库。

对于 Cloud:您必须拥有由受信任实体(例如 Symantec 或 VeriSign)签名的证书。 您不能使用自签名证书,也不能使用由自签名 CA 签名的叶证书。

对于 Cloud:如果您的现有虚拟主机配置为使用 443 以外的端口 ,则无法更改 TLS 设置。这意味着,您无法将 TLS 设置从 启用更改为停用,也无法从停用更改为启用。

false 否
ClientAuthEnabled 在 Edge(服务器)和发出请求的应用(客户端)之间启用双向(或客户端)TLS。启用双向 TLS 需要您在 Edge 上设置一个信任库,其中包含 来自 TLS 客户端的证书。 false 否
KeyStore

Edge 上的密钥库的名称。

Apigee 建议您使用引用来指定密钥库名称,这样您就可以 更改密钥库,而无需重启路由器。如需了解详情,请参阅用于配置 TLS 的 选项。

无 如果 Enabled 为 true,则为“是”
KeyAlias 将证书和私钥上传到密钥库时指定的别名。您 必须按字面量指定别名名称;不能使用引用。如需了解详情,请参阅用于配置 Options for configuring TLS 的选项。 无 如果 Enabled 为 true,则为“是”
TrustStore

Edge 上信任库的名称,其中包含用于双向 TLS 的证书或证书链 。如果 <ClientAuthEnabled> 为 true,则为必填项。

Apigee 建议您使用引用来指定信任库名称,这样您就可以更改信任库,而无需重启路由器。如需了解详情,请参阅用于配置 TLS 的 选项。

无 否
IgnoreValidationErrors

如果为 true,则指定忽略 TLS 证书错误。这类似于 c网址 的“-k”选项 。

此选项在为目标服务器和目标端点配置 TLS 时,以及 配置使用双向 TLS 的虚拟主机时有效。

当与目标端点/目标服务器搭配使用时,如果后端系统使用 SNI,并返回主题标识名 (DN) 与主机名不匹配的证书 ,则您无法忽略该错误且连接会失败 。

false 否
Ciphers

仅适用于 Edge for Private Cloud 4.15.07 及更早版本。

指定虚拟主机支持的加密方式。如果未指定加密方式,则 允许可用于 JVM 的所有加密方式。

如需限制加密方式,请添加以下元素:

<Ciphers>
  <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
  <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
</Ciphers>
JVM 支持的所有加密方式 否
Protocols

仅适用于 Edge for Private Cloud 4.15.07 及更早版本。

指定虚拟主机支持的协议。如果未指定协议, 则允许可用于 JVM 的所有协议。

如需限制协议,请添加以下元素:

<Protocols>
  <Protocol>TLSv1</Protocol>
  <Protocol>TLSv1.2</Protocol>
  <Protocol>SSLv2Hello</Protocol>
</Protocols>
JVM 支持的所有协议 否
UseBuiltInFreeTrialCert 仅适用于 Edge Cloud。
UseBuiltInFreeTrialCert

如果您有付费 Edge for Cloud 帐号,并且还没有 TLS 证书和密钥,则可以 创建一个使用 Apigee 免费试用证书和密钥的虚拟主机。这意味着您可以创建 虚拟主机,而无需先创建密钥库。

Apigee 免费试用证书是为 *.apigee.net 网域定义的。因此,虚拟主机的 <HostAlias> 也必须采用 *.apigee.net 形式。

请参阅 定义虚拟主机 使用 Apigee 免费试用证书和密钥。

false 否
PropagateTLSInformation 仅适用于 Edge Cloud 的 Alpha 版。
ConnectionProperties

启用 Edge 捕获 TLS 连接信息。 然后,此信息将作为 API 代理中的流变量提供。 如需了解详情,请参阅访问 API 代理中的 TLS 连接信息 。

false 否
ClientProperties

启用 Edge 在双向 TLS 中捕获的客户端证书详细信息。 然后,此信息将作为 API 代理中的流变量提供。 如需了解详情,请参阅访问 API 代理中的 TLS 连接信息 。

false 否
Properties 适用于 Edge Cloud 和 Private Cloud 4.17.01 及 更高版本。
proxy_read_timeout

设置消息处理器和路由器之间的超时时长(以秒为单位)。如果路由器在此时长到期之前未收到消息处理器的响应,则会断开连接并返回 HTTP 504 响应。

proxy_read_timeout 的值应大于消息处理器使用的目标超时值。这样可确保路由器不会在 消息处理器有时间返回响应之前超时。消息处理器的默认目标超时时间为 55 秒(55000 毫秒),由消息处理器的 conf_http_HTTPTransport.io.timeout.millis 令牌定义。

57 否
keepalive_timeout

设置客户端发出包含 Keep-Alive 标头的请求时,客户端和路由器之间的超时时长(以秒为单位)。路由器会保持连接处于打开状态 直到时长到期。

如果路由器当前正在等待消息处理器的响应 ,则不会关闭连接。只有在路由器将响应返回给客户端后,超时才会开始 。

65 否
ssl_ciphers

设置虚拟主机支持的加密方式,替换路由器上设置的默认加密方式。

请指定以英文冒号分隔的加密方式列表,格式如下:

<Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH;</Property>

如需了解此令牌允许的语法和值,请参阅 https://www.openssl.org/docs/man1.0.2/man1/ciphers.html。 请注意,此令牌使用 OpenSSL 加密方式名称(例如 AES128-SHA256),而不是 Java/JSSE 加密方式名称(例如 TLS_RSA_WITH_AES_128_CBC_SHA256)。

HIGH:!aNULL:

!MD5:

!DH+3DES:

!kEDH

否
ssl_protocols

仅适用于 Edge for Private Cloud。

将虚拟主机支持的 TLS 协议设置为以空格分隔的列表, 替换路由器上设置的默认协议。

注意:如果两个虚拟主机共享同一个端口,则必须将 ssl_protocols设置为相同的协议。也就是说,共享同一端口的虚拟主机必须 支持完全相同的协议。

请指定以空格分隔的 TLS 协议列表,格式如下:

<Property name="ssl_protocols">TLSv1 TLSv1.2</Property>
TLSv1 TLSv1.1 TLSv1.2 否
proxy_request_buffering

启用 (on) 或停用 (off) 请求正文的缓冲。启用缓冲后, 路由器会在将整个请求正文发送到消息处理器之前对其进行缓冲。如果 发生错误,路由器可以重试其他消息处理器。

如果停用,则缓冲将被停用,并且请求正文会在收到后立即发送到消息处理器 。如果发生错误,路由器不会向其他消息处理器重试 请求。

开启 否
proxy_buffering 启用 (on) 或停用 (off) 响应的缓冲。启用缓冲后, 路由器会缓冲响应。停用缓冲后,响应会同步传递给客户端 ,路由器收到响应后会立即传递。 开启 否