Tipos de condição para regras de receptor
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.
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 nos URLs de solicitação. Para obter mais informações, consulte Condições do caminho.
query-string-
Rota com base em pares de chave/valor ou valores nas strings 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.
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-patternesource-ip. Cada regra também pode incluir zero ou mais de cada uma das seguintes condições:http-headerequery-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-headerepath-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-patternequery-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 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
Você pode especificar condições ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule.
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 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.
exemplo 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 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.
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
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 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
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.
Condições de string de consulta
Você pode usar condições de string de consulta para configurar regras que roteiam solicitações com base em pares de chave/valor ou valores na string 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 string de consulta
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 uma string de consulta que inclui um par de chave/valor 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 endereços IPv4 e IPv6. 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 é atendida pelos endereços no cabeçalho X-Forwarded-For. Para procurar endereços no cabeçalho X-Forwarded-For, use uma condição http-header.
exemplo 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 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"] } } ]