

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tipos de condição para regras de receptor
<a name="rule-condition-types"></a>

As condições definem os critérios a serem atendidos pelas solicitações recebidas para que uma regra de receptor entre em vigor. Se uma solicitação corresponder às condições de uma regra, ela será tratada conforme especificado pelas ações da regra. Cada condição de regra possui um tipo e informações de configuração. Os Application Load Balancers são compatíveis com os seguintes tipos de condição para regras de receptor.Tipos de condição

`host-header`  
Rota com base no nome do host de cada solicitação. Para obter mais informações, consulte [Condições do host](#host-conditions).

`http-header`  
Rota com base nos cabeçalhos HTTP de cada solicitação. Para obter mais informações, consulte [Condições de cabeçalho HTTP](#http-header-conditions).

`http-request-method`  
Rota com base no método de solicitação HTTP de cada solicitação. Para obter mais informações, consulte [Condições do método de solicitação HTTP](#http-request-method-conditions).

`path-pattern`  
Rota com base nos padrões de caminho na solicitação URLs. Para obter mais informações, consulte [Condições do caminho](#path-conditions).

`query-string`  
Rota com base em key/value pares ou valores nas cadeias de caracteres de consulta. Para obter mais informações, consulte [Condições de string de consulta](#query-string-conditions).

`source-ip`  
Rota com base no endereço IP de origem de cada solicitação. Para obter mais informações, consulte [Condições de endereço IP de origem](#source-ip-conditions).

**Noções básicas de condição**
+ Cada regra pode, opcionalmente, incluir zero ou uma de cada uma das seguintes condições: `host-header`, `http-request-method`, `path-pattern` e `source-ip`. Cada regra também pode incluir zero ou mais de cada uma das seguintes condições: `http-header` e `query-string`.
+ Você pode usar a correspondência de valores ou a correspondência de expressão regular (regex) com as condições `host-header`, `http-header` e `path-pattern`.
+ Você pode especificar até três avaliações de correspondência por condição. Por exemplo, para cada condição `http-header`, você pode especificar até três strings para serem comparadas ao valor do cabeçalho HTTP na solicitação. A condição é atendida se uma das strings corresponder ao valor do cabeçalho HTTP. Para exigir que todas as strings sejam uma correspondência, crie uma condição por avaliação de correspondência.
+ Você pode especificar até cinco avaliações de correspondência por regra. Por exemplo, você pode criar uma regra com cinco condições em que cada condição tenha uma avaliação de correspondência.
+ Você pode incluir caracteres curinga nas avaliações de correspondência para as condições `http-header`, `host-header`, `path-pattern` e `query-string`. Existe um limite de cinco caracteres curinga por regra.
+ As regras são aplicadas apenas a caracteres ASCII visíveis; caracteres de controle (0x00 a 0x1f e 0x7f) são excluídos.
+ As expressões regulares usadas em condições de regra não oferecem suporte aos seguintes recursos: lookaheads, lookbehinds, referências anteriores, grupos atômicos, quantificadores possessivos, sub-rotinas, recursão e classes de caracteres Unicode (como). `\p{L}`

**Demonstrações**  
Para demonstrações, consulte [Roteamento avançado de solicitação](https://exampleloadbalancer.com/advanced_request_routing_demo.html).

## Condições do host
<a name="host-conditions"></a>

Você pode usar as condições do host para definir regras que roteiam solicitações com base no nome do host no cabeçalho de host (também conhecido como *roteamento baseado em host*). Isso permite que você ofereça suporte a vários subdomínios e a diferentes domínios de nível superior usando um só balanceador de carga.

Um nome de host não diferencia maiúsculas de minúsculas, pode ter até 128 caracteres e conter qualquer um dos caracteres a seguir:
+ A-Z, a-z, 0-9
+ - .
+ \$1 (corresponde a 0 ou mais caracteres)
+ ? (corresponde a exatamente 1 caractere)

É necessário incluir pelo menos um caractere ".". Você pode incluir somente caracteres alfabéticos após o "." final.

**Por exemplo, os hostnames**
+ example.com
+ test.example.com
+ \$1.example.com

A regra \$1.example.com corresponde a test.example.com, mas não corresponde a example.com.

**Example Exemplo de condição de cabeçalho de host**  
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) e [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html).  

```
[
  {
      "Field": "host-header",
      "HostHeaderConfig": {
          "Values": ["*.example.com"]
      }
  }
]
```

```
[
  {
      "Field": "host-header",
      "HostHeaderConfig": {
          "RegexValues": ["^(.*)\\.example\\.com$"]
      }
  }
]
```

## Condições de cabeçalho HTTP
<a name="http-header-conditions"></a>

Você pode usar condições de cabeçalho HTTP para configurar regras que roteiam solicitações com base nos cabeçalhos HTTP da solicitação. Você pode especificar os nomes dos campos de cabeçalho HTTP padrão ou personalizados. O nome do cabeçalho e a avaliação de correspondência não diferenciam maiúsculas de minúsculas. Os caracteres curinga a seguir são compatíveis com as strings de comparação: \$1 (corresponde a 0 ou mais caracteres) e ? (corresponde exatamente a 1 caractere). Caracteres curinga não são compatíveis com o nome do cabeçalho.

Quando o atributo `routing.http.drop_invalid_header_fields` do Application Load Balancer estiver ativado, ele eliminará os nomes dos cabeçalhos que não estão em conformidade com as expressões regulares (`A-Z,a-z,0-9`). Nomes de cabeçalho que não estejam em conformidade com as expressões regulares também podem ser adicionados.

**Example Exemplo de condição de cabeçalho HTTP**  
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) e [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html). A condição a seguir é atendida por solicitações com um cabeçalho User-Agent que corresponda a uma das strings especificadas.  

```
[
  {
      "Field": "http-header",
      "HttpHeaderConfig": {
          "HttpHeaderName": "User-Agent",
          "Values": ["*Chrome*", "*Safari*"]
      }
  }
]
```

```
[
  {
      "Field": "http-header",
      "HttpHeaderConfig": {
          "HttpHeaderName": "User-Agent",
          "RegexValues": [".+"]
      }
  }
]
```

## Condições do método de solicitação HTTP
<a name="http-request-method-conditions"></a>

Você pode usar condições do método de solicitação HTTP para configurar regras que roteiam solicitações com base no método de solicitação HTTP da solicitação. Você pode especificar métodos HTTP padrão ou personalizados. A avaliação de correspondência faz distinção entre maiúsculas e minúsculas. Caracteres curinga não são compatíveis; portanto, o nome do método deve ser uma correspondência exata.

Recomendamos que você roteie as solicitações GET e HEAD da mesma maneira, porque a resposta a uma solicitação HEAD pode ser armazenada em cache.

**Example Exemplo de condição do método HTTP**  
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) e [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html). A condição a seguir é atendida por solicitações que usam o método especificado.  

```
[
  {
      "Field": "http-request-method",
      "HttpRequestMethodConfig": {
          "Values": ["CUSTOM-METHOD"]
      }
  }
]
```

## Condições do caminho
<a name="path-conditions"></a>

Você pode usar as condições de caminho para definir regras que roteiam solicitações com base no URL da solicitação (também conhecido como *roteamento baseado em caminho*).

O padrão de caminho é aplicado apenas ao caminho do URL, não aos seus parâmetros de consulta. Ele é aplicado somente a caracteres ASCII visíveis; caracteres de controle (0x00 a 0x1f e 0x7f) são excluídos.

A avaliação da regra é realizada somente após a normalização de URI.

O padrão do caminho diferencia maiúsculas de minúsculas, pode ter até 128 caracteres e conter qualquer um dos caracteres a seguir.
+ A-Z, a-z, 0-9
+ \$1 - . \$1 / \$1 " ' @ : \$1
+ & (usando &amp;)
+ \$1 (corresponde a 0 ou mais caracteres)
+ ? (corresponde a exatamente 1 caractere)

Se a versão do protocolo for gRPC, as condições podem ser específicas de um pacote, serviço ou método.

**Exemplos de padrões de caminho HTTP**
+ `/img/*`
+ `/img/*/pics`

**Exemplos de padrões de caminho gRPC**
+ /package
+ /package.service
+ /package.service/method

O caminho padrão é usado para rotear as solicitações, mas não as altera. Por exemplo, se uma regra tiver um padrão de caminho `/img/*`, a regra encaminhará uma solicitação de `/img/picture.jpg` ao grupo de destino especificado como uma solicitação para `/img/picture.jpg`.

**Example Exemplo de condição de padrão de caminho**  
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) e [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html). A condição a seguir é atendida por solicitações com um URL que contém a string especificada.  

```
[
  {
      "Field": "path-pattern",
      "PathPatternConfig": {
          "Values": ["/img/*"]
      }
  }
]
```

```
[
  {
      "Field": "path-pattern",
      "PathPatternConfig": {
          "RegexValues": ["^\\/api\\/(.*)$"]
      }
  }
]
```

## Condições de string de consulta
<a name="query-string-conditions"></a>

Você pode usar condições da sequência de caracteres de consulta para configurar regras que roteiam solicitações com base em key/value pares ou valores na sequência de caracteres de consulta. A avaliação de correspondência não diferencia maiúsculas de minúsculas. Os caracteres curinga a seguir são compatíveis: \$1 (corresponde a 0 ou mais caracteres) e ? (corresponde exatamente a 1 caractere).

**Example Exemplo de condição de string de consulta**  
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) e [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html). A condição a seguir é satisfeita por solicitações com uma string de consulta que inclui um key/value par de “version=v1" ou qualquer chave definida como “example”.  

```
[
  {
      "Field": "query-string",
      "QueryStringConfig": {
          "Values": [
            {
                "Key": "version", 
                "Value": "v1"
            },
            {
                "Value": "*example*"
            }
          ]
      }
  }
]
```

## Condições de endereço IP de origem
<a name="source-ip-conditions"></a>

Você pode usar condições de endereço IP de origem para configurar regras que roteiam solicitações com base no endereço IP de origem da solicitação. O endereço IP deve ser especificado no formato CIDR. Você pode usar ambos IPv4 e IPv6 endereços. Caracteres curinga não são compatíveis. Você não pode especificar o CIDR `255.255.255.255/32` para a condição da regra de IP de origem. 

Se um cliente estiver por trás de um proxy, este é o endereço IP do proxy e não o endereço IP do cliente.

Essa condição não é satisfeita pelos endereços no X-Forwarded-For cabeçalho. Para pesquisar endereços no X-Forwarded-For cabeçalho, use uma `http-header` condição.

**Example Exemplo de condição de IP de origem**  
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) e [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html). A condição a seguir é atendida por solicitações com um endereço IP de origem em um dos blocos CIDR especificados.  

```
[
  {
      "Field": "source-ip",
      "SourceIpConfig": {
          "Values": ["192.0.2.0/24", "198.51.100.10/32"]
      }
  }
]
```