Tipos de condição para regras de ouvinte - Elastic Load Balancing

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 ouvinte

As condições definem os critérios que as solicitações recebidas devem atender para que uma regra de ouvinte 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 oferecem suporte aos seguintes tipos de condições para regras de ouvinte.

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.

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-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.

path-pattern

Rota com base nos padrões de caminho na solicitação URLs. Para obter mais informações, consulte Condições do caminho.

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.

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.

Princípios básicos da condição
  • Cada regra pode, opcionalmente, incluir até uma de cada uma das seguintes condições: host-header, http-request-method, path-pattern e source-ip. Cada regra também pode, opcionalmente, incluir uma ou mais de cada uma das seguintes condições: http-header e query-string.

  • 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.

Demonstrações

Para demonstrações, consulte Roteamento avançado de solicitação.

Condições de cabeçalho HTTP

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: * (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 Application Load Balancer routing.http.drop_invalid_header_fields 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.

exemplo Exemplo de condição de cabeçalho HTTP para o AWS CLI

Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. 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*"] } } ]

Condições do método de solicitação HTTP

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.

exemplo Exemplo de condição do método HTTP para o AWS CLI

Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. 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 host

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

  • - .

  • * (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

  • *.example.com

A regra *.example.com corresponde a test.example.com, mas não corresponde a example.com.

exemplo Exemplo de condição de cabeçalho de host para o AWS CLI

Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A condição a seguir é atendida por solicitações com um cabeçalho de host que corresponda à string especificada.

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

Condições do caminho

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

  • _ - . $ / ~ " ' @ : +

  • & (usando &)

  • * (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.

exemplo Exemplo de condição de padrão de caminho para o AWS CLI

Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A condição a seguir é atendida por solicitações com um URL que contém a string especificada.

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

Condições de string de consulta

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: * (corresponde a 0 ou mais caracteres) e ? (corresponde exatamente a 1 caractere).

exemplo Exemplo de condição de sequência de caracteres de consulta para o AWS CLI

Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. 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

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.

exemplo Exemplo de condição de IP de origem para o AWS CLI

Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. 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"] } } ]