虚拟主机属性参考文档

您正在查看 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.combeta.example.comlive.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) 响应的缓冲。启用缓冲后, 路由器会缓冲响应。停用缓冲后,响应会同步传递给客户端 ,路由器收到响应后会立即传递。 开启