虚拟主机属性参考文档

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

虚拟主机表示法

您用于定义虚拟主机的 XML 对象取决于您使用的 Edge 版本: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>

私有云 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 代理时,您可以使用该名称引用虚拟主机。

您可以在名称属性中使用的字符仅限于:A-Z0-9._\-$%。

端口

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

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

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

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

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

BaseUrl 替换 Edge 界面针对部署到虚拟主机的 API 代理显示的网址。如果您在边缘路由器前面有外部负载平衡器,此属性会很有用。如需了解详情,请参阅配置对私有云 API 的 TLS 访问权限

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

OCSPStapling

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

启用后,OCSP 绑定允许 Edge(充当单向 TLS 的 TLS 服务器)直接查询 OCSP 响应程序,然后缓存响应。然后,Edge 会将此响应返回给 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 以外的端口的虚拟主机,则无法添加或移除主机别名。

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

接口 仅适用于 Edge for Private Cloud。
接口

指定您希望 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 来处理发送到边缘路由器的请求,则路由器会将 ELB 的 IP 地址视为客户端 IP 地址,而不是实际的客户端 IP 地址。如果路由器需要真实的客户端 IP,请在 ELB 上启用 proxy_protocol,以便它在 TCP 数据包中传递客户端 IP。在路由器上,您还必须将虚拟主机上的 <ListenOption> 设置为 proxy_protocol。由于 ELB 处于 TCP 直通模式,因此您通常会在路由器上终止 TLS。 因此,通常只有在将虚拟主机配置为使用 TLS 时,才会将其配置为使用 proxy_protocol

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

例如:

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

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

SSLInfo
已启用

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

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

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

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

Edge 上的密钥库的名称。

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

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

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

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

IgnoreValidationErrors

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

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

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

false
加密方式

仅适用于 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 支持
协议

仅适用于 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 freetrial 证书和密钥的虚拟主机

false
PropagateTLSInformation 仅在 Edge Cloud 中提供 Alpha 版。
ConnectionProperties

允许 Edge 捕获 TLS 连接信息。 然后,这些信息会作为流变量在 API 代理中提供。 如需了解详情,请参阅访问 API 代理中的 TLS 连接信息

false
ClientProperties

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

false
媒体资源 适用于 Edge Cloud 和 Private Cloud 4.17.01 及更高版本。
proxy_read_timeout

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

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

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

启用(开启)或停用(关闭)对请求正文的缓冲。启用缓冲后,路由器会先缓冲整个请求正文,然后再将其发送到消息处理器。如果出现错误,路由器可以尝试使用其他消息处理器。

如果处于关闭状态,则会停用缓冲,并在收到请求正文后立即将其发送到消息处理器。如果出现错误,路由器不会向其他消息处理器重试请求。

开启
proxy_buffering 启用(开启)或停用(关闭)响应缓冲。启用缓冲后,路由器会缓冲响应。关闭缓冲后,路由器收到响应后,系统会立即将响应同步传递给客户端。 开启