Receptores para seus Application Load Balancers - 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á.

Receptores para seus Application Load Balancers

Um receptor é um processo que verifica solicitações de conexão usando o protocolo e a porta configurados por você. Antes de começar a usar seu Application Load Balancer, você deve adicionar ao menos um receptor. Se seu balanceador de carga não tiver receptores, ele não poderá receber tráfego dos clientes. As regras que você define para seus ouvintes determinam como o balanceador de carga encaminha as solicitações para os destinos que você registra, como EC2 instâncias.

Configuração do receptor

Os listeners são compatíveis com os seguintes protocolos e portas:

  • Protocolos:HTTP, HTTPS

  • Ports (Portas): 1-65535

Você pode usar um HTTPS ouvinte para transferir o trabalho de criptografia e decodificação para seu balanceador de carga, para que seus aplicativos possam se concentrar em sua lógica de negócios. Se o protocolo do ouvinte forHTTPS, você deverá implantar pelo menos um certificado de SSL servidor no ouvinte. Para obter mais informações, consulte Crie um HTTPS ouvinte para seu Application Load Balancer.

Se você precisar garantir que os destinos descriptografem o HTTPS tráfego em vez do balanceador de carga, você pode criar um Network Load Balancer com um ouvinte na porta 443. TCP Com um TCP ouvinte, o balanceador de carga passa o tráfego criptografado para os destinos sem decifrá-lo. Para obter mais informações, consulte o Guia do usuário de network load balancers.

Os Application Load Balancers fornecem suporte nativo para WebSockets. Você pode atualizar uma conexão HTTP /1.1 existente em uma conexão WebSocket (wsouwss) usando uma atualização de HTTP conexão. Quando você atualiza, a TCP conexão usada para solicitações (com o balanceador de carga e com o destino) se torna uma WebSocket conexão persistente entre o cliente e o destino por meio do balanceador de carga. Você pode usar WebSockets com ambos HTTP e com HTTPS ouvintes. As opções que você escolhe para seu ouvinte se aplicam tanto às WebSocket conexões quanto ao HTTP tráfego. Para obter mais informações, consulte Como o WebSocket protocolo funciona no Amazon CloudFront Developer Guide.

Os Application Load Balancers fornecem suporte nativo para HTTP /2 com HTTPS ouvintes. Você pode enviar até 128 solicitações em paralelo usando uma conexão HTTP /2. Você pode usar a versão do protocolo para enviar a solicitação aos destinos usando HTTP /2. Para obter mais informações, consulte Versão do protocolo. Como HTTP /2 usa conexões front-end com mais eficiência, você pode notar menos conexões entre os clientes e o balanceador de carga. Você não pode usar o recurso server-push de /2. HTTP

Para obter mais informações, consulte Roteamento de solicitação no Guia do usuário do Elastic Load Balancing.

Atributos do receptor

A seguir estão os atributos do ouvinte para Application Load Balancers

routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name

Permite modificar o nome do cabeçalho da solicitação HTTPX-Amzn-Mtls-Clientcert-Serial-Number.

routing.http.request.x_amzn_mtls_clientcert_issuer.header_name

Permite modificar o nome do cabeçalho da solicitação HTTPX-Amzn-Mtls-Clientcert-Issuer.

routing.http.request.x_amzn_mtls_clientcert_subject.header_name

Permite que você modifique o nome do cabeçalho da solicitação HTTPX-Amzn-Mtls-Clientcert-Subject.

routing.http.request.x_amzn_mtls_clientcert_validity.header_name

Permite que você modifique o nome do cabeçalho da solicitação HTTPX-Amzn-Mtls-Clientcert-Validity.

routing.http.request.x_amzn_mtls_clientcert_leaf.header_name

Permite modificar o nome do cabeçalho da solicitação HTTPX-Amzn-Mtls-Clientcert-Leaf.

routing.http.request.x_amzn_mtls_clientcert.header_name

Permite modificar o nome do cabeçalho da solicitação HTTPX-Amzn-Mtls-Clientcert.

routing.http.request.x_amzn_tls_version.header_name

Permite modificar o nome do cabeçalho da solicitação HTTPX-Amzn-Tls-Version.

routing.http.request.x_amzn_tls_cipher_suite.header_name

Permite modificar o nome do cabeçalho da solicitação HTTPX-Amzn-Tls-Cipher-Suite.

routing.http.response.server.enabled

Permite permitir ou remover o cabeçalho do servidor de HTTP resposta.

routing.http.response.strict_transport_security.header_value

Informa aos navegadores que o site só deve ser acessado usandoHTTPS, e que qualquer tentativa futura de acessá-lo usando HTTP deve ser automaticamente convertida HTTPS em.

routing.http.response.access_control_allow_origin.header_value

Especifica quais origens têm permissão para acessar o servidor.

routing.http.response.access_control_allow_methods.header_value

Retorna quais HTTP métodos são permitidos ao acessar o servidor de uma origem diferente.

routing.http.response.access_control_allow_headers.header_value

Especifica quais cabeçalhos podem ser usados durante a solicitação.

routing.http.response.access_control_allow_credentials.header_value

Indica se o navegador deve incluir credenciais, como cookies ou autenticação, ao fazer solicitações.

routing.http.response.access_control_expose_headers.header_value

Retorna quais cabeçalhos o navegador pode expor ao cliente solicitante.

routing.http.response.access_control_max_age.header_value

Especifica por quanto tempo os resultados de uma solicitação de preflight podem ser armazenados em cache, em segundos.

routing.http.response.content_security_policy.header_value

Especifica as restrições impostas pelo navegador para ajudar a minimizar o risco de certos tipos de ameaças à segurança.

routing.http.response.x_content_type_options.header_value

Indica se os MIME tipos anunciados nos cabeçalhos Content-Type devem ser seguidos e não alterados.

routing.http.response.x_frame_options.header_value

Indica se o navegador tem permissão para renderizar uma página em um quadro, iframe, incorporação ou objeto.

Regras do listener

Cada receptor tem uma ação padrão, também conhecida como regra padrão. Não é possível excluir a regra padrão e ela sempre é executada por último. É possível criar regras adicionais e elas consistirão em uma prioridade, uma ou mais ações e uma ou mais condições. Você pode adicionar ou editar regras a qualquer momento. Para obter mais informações, consulte Editar uma regra.

Regras padrão

Ao criar um listener, você define as ações para a regra padrão. As regras padrão não podem ter condições. Se nenhuma das condições das regras do listener for atendida, a ação para a regra padrão será executada.

Veja a seguir um exemplo de uma regra padrão como mostrado no console:

A regra padrão para um ouvinte.

Prioridade das regras

Cada regra tem uma prioridade. As regras são avaliadas em ordem de prioridade, do valor mais baixo para o valor mais alto. A regra padrão é avaliada por último. Você pode alterar a prioridade de uma regra não padrão a qualquer momento. Você não pode alterar a prioridade da regra padrão. Para obter mais informações, consulte Atualizar prioridade de regra.

Ações de regra

Cada ação de regra tem um tipo, uma prioridade e as informações necessárias para execução da ação. Para obter mais informações, consulte Tipos de ação de regra.

Condições de regra

Cada condição de regra possui um tipo e informações de configuração. Quando as condições de uma regra forem atendidas, a ação será executada. Para obter mais informações, consulte Tipos de condição de regra.

Tipos de ação de regra

Veja a seguir os tipos de ação compatíveis para uma regra de receptor:

authenticate-cognito

[HTTPSouvintes] Use o Amazon Cognito para autenticar usuários. Para obter mais informações, consulte Autenticar usuários usando um Application Load Balancer.

authenticate-oidc

[HTTPSouvintes] Use um provedor de identidade compatível com o OpenID Connect (OIDC) para autenticar usuários.

fixed-response

Retorne uma HTTP resposta personalizada. Para obter mais informações, consulte Ações de resposta fixa.

forward

Encaminha as solicitações para os grupos de destino especificados. Para obter mais informações, consulte Ações de encaminhamento.

redirect

Redirecione as solicitações de uma URL para outra. Para obter mais informações, consulte Ações de redirecionamento.

A ação com a menor prioridade é executada primeiro. Cada regra deve incluir exatamente uma das seguintes ações: forward, redirect ou fixed-response e deve ser a última ação a ser executada.

Se a versão do protocolo for g RPC ou HTTP /2, as únicas ações suportadas serão forward ações.

Ações de resposta fixa

Você pode usar fixed-response ações para descartar solicitações de clientes e retornar uma HTTP resposta personalizada. Você pode usar essa ação para retornar um código de resposta 2XX, 4XX e 5XX e uma mensagem opcional.

Quando uma fixed-response ação é executada, a ação e a URL do alvo de redirecionamento são registradas nos registros de acesso. Para obter mais informações, consulte Entradas do log de acesso. A contagem de ações de fixed-response com êxito é relatada na métrica HTTP_Fixed_Response_Count. Para obter mais informações, consulte Métricas do Application Load Balancer.

exemplo Exemplo de ação de resposta fixa para o AWS CLI

Você pode especificar uma ação ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A ação a seguir envia uma resposta fixa com o código de status e o corpo da mensagem especificados.

[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]

Ações de encaminhamento

É possível usar ações forward a fim de rotear solicitações para um ou mais grupos de destino. Se especificar vários grupos de destino para uma ação forward, você deverá especificar um peso para cada grupo de destino. Cada peso de grupo de destino é um valor de 0 a 999. As solicitações que correspondem a uma regra de listener com grupos de destino ponderados são distribuídas para esses grupos de destino com base em seus pesos. Por exemplo, se você especificar dois grupos de destino, cada um com um peso de 10, cada grupo de destino receberá metade das solicitações. Se você especificar dois grupos de destino, um com peso de 10 e o outro com peso de 20, o grupo de destino com peso de 20 receberá duas vezes mais solicitações do que o outro grupo de destino.

Por padrão, configurar uma regra para distribuir o tráfego entre grupos de destino ponderados não garante que as sticky sessions sejam honradas. Para garantir que as sticky sessions sejam honradas, habilite a perdurabilidade do grupo de destino para a regra. Quando o balanceador de carga encaminha pela primeira vez uma solicitação para um grupo-alvo ponderado, ele gera um cookie chamado AWSALBTG que codifica informações sobre o grupo-alvo selecionado, criptografa o cookie e inclui o cookie na resposta ao cliente. O cliente deve incluir o cookie recebido nas solicitações subsequentes ao load balancer. Quando o load balancer recebe uma solicitação que corresponde a uma regra com a perdurabilidade do grupo de destino habilitada e contém o cookie, a solicitação é roteada para o grupo de destino especificado no cookie.

Os Application Load Balancers não oferecem suporte a valores de cookie URL codificados.

Com solicitações CORS (compartilhamento de recursos entre origens), alguns navegadores precisam ativar SameSite=None; Secure a aderência. Nesse caso, o Elastic Load Balancing gera um segundo cookie AWSALBTGCORS, que inclui as mesmas informações do cookie de aderência original mais esse atributo. SameSite Os clientes recebem ambos os cookies.

exemplo Exemplo de ação de encaminhamento com um grupo de destino

Você pode especificar uma ação ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A ação a seguir encaminha solicitações para o grupo de destino especificado.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" } ] } } ]
exemplo Exemplo de ação de encaminhamento com dois grupos ponderados de destino

A ação a seguir encaminha solicitações para os dois grupos de destino especificados, com base no peso de cada grupo de destino.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59", "Weight": 20 } ] } } ]
exemplo Exemplo de ação de encaminhamento com perdurabilidade habilitada

Se você tiver uma regra de encaminhamento com vários grupos de destino e um ou mais grupos de destino tiver sessões persistentes habilitadas, você deverá habilitar a perdurabilidade do grupo de destino.

A ação a seguir encaminha solicitações para os dois grupos de destino especificados, com a perdurabilidade do grupo de destino habilitada. As solicitações que não contêm os cookies de perdurabilidade são roteadas com base no peso de cada grupo de destino.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]

Ações de redirecionamento

Você pode usar redirect ações para redirecionar as solicitações do cliente de uma URL para outra. Você pode configurar redirecionamentos como temporários (HTTP302) ou permanentes (HTTP301) com base em suas necessidades.

A URI consiste nos seguintes componentes:

protocol://hostname:port/path?query

Você deve modificar pelo menos um dos seguintes componentes para evitar um loop de redirecionamento: protocolo, nome do host, porta ou caminho. Todos os componentes que você não modificar manterão seus valores originais.

protocolo

O protocolo (HTTPouHTTPS). Você pode redirecionar HTTP para HTTPHTTPS, HTTP para e HTTPS paraHTTPS. Você não pode redirecionar HTTPS para. HTTP

hostname

O nome do host. Um nome de host não diferencia maiúsculas de minúsculas, pode ter até 128 caracteres e consiste em caracteres alfanuméricos, curingas (* e ?) e hifens (-).

porta

A porta (1 a 65535).

caminho

O caminho absoluto, começando com a "/" inicial. Um caminho diferencia maiúsculas de minúsculas, pode ter até 128 caracteres e consiste em caracteres alfanuméricos, curingas (* e ?), & (usando &) e nos seguintes caracteres especiais: _-.$/~"'@:+.

consulta

Os parâmetros da consulta. O tamanho máximo é 128 caracteres.

Você pode reutilizar URI componentes do original URL no destino URL usando as seguintes palavras-chave reservadas:

  • #{protocol} – mantém o protocolo. Use no protocolo e nos componentes de consulta.

  • #{host} – mantém o domínio. Use no nome de host, no caminho e nos componentes de consulta.

  • #{port} – mantém a porta. Use na porta, no caminho e nos componentes de consulta.

  • #{path} – mantém o caminho. Use no caminho e nos componentes de consulta.

  • #{query} – mantém os parâmetros da consulta. Use no componente de consulta.

Quando uma ação de redirect é executada, a ação é registrada nos logs de acesso. Para obter mais informações, consulte Entradas do log de acesso. A contagem de ações de redirect com êxito é relatada na métrica HTTP_Redirect_Count. Para obter mais informações, consulte Métricas do Application Load Balancer.

exemplo Exemplo de ações de redirecionamento usando o console

A regra a seguir configura um redirecionamento permanente para um URL que usa o HTTPS protocolo e a porta especificada (40443), mas mantém o nome do host, o caminho e os parâmetros de consulta originais. Esta tela é equivalente a "https://#{host}:40443/#{path}?#{query}".

Uma regra que redireciona a solicitação para uma URL que usa o HTTPS protocolo e a porta especificada (40443), mas mantém o domínio, o caminho e os parâmetros de consulta originais do original. URL

A regra a seguir configura um redirecionamento permanente para um URL que retém o protocolo original, a porta, o nome do host e os parâmetros de consulta e usa a #{path} palavra-chave para criar um caminho modificado. Esta tela é equivalente a "#{protocol}://#{host}:#{port}/new/#{path}?#{query}".

Uma regra que redireciona a solicitação para uma URL que retém o protocolo original, a porta, o nome do host e os parâmetros de consulta e usa a #{path} palavra-chave para criar um caminho modificado.
exemplo Exemplo de ação de redirecionamento para o AWS CLI

Você pode especificar uma ação ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A ação a seguir redireciona uma HTTP solicitação para uma HTTPS solicitação na porta 443, com o mesmo nome de host, caminho e string de consulta da solicitação. HTTP

[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]

Tipos de condição de regra

Veja a seguir os tipos de condição compatíveis para uma regra:

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 HTTP cabeçalhos de cada solicitação. Para obter mais informações, consulte HTTPcondições do cabeçalho.

http-request-method

Rota com base no método de HTTP solicitação de cada solicitação. Para obter mais informações, consulte HTTPcondições do método de solicitação.

path-pattern

Rota com base nos padrões de caminho na solicitaçãoURLs. 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.

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 http-header condição, você pode especificar até três cadeias de caracteres a serem comparadas ao valor do HTTP cabeçalho na solicitação. A condição é satisfeita se uma das cadeias corresponder ao valor do HTTP cabeçalho. 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 somente aos ASCII caracteres visíveis; os caracteres de controle (0x00 a 0x1f e 0x7f) são excluídos.

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

HTTPcondições do cabeçalho

Você pode usar condições de HTTP cabeçalho para configurar regras que roteiam solicitações com base nos HTTP cabeçalhos da solicitação. Você pode especificar os nomes dos campos de HTTP cabeçalho 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.

exemplo Exemplo de condição de HTTP cabeçalho 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*"] } } ]

HTTPcondições do método de solicitação

Você pode usar as condições do método de HTTP solicitação para configurar regras que roteiam solicitações com base no HTTP método de solicitação da solicitação. Você pode especificar HTTP métodos 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 GET e HEAD solicite da mesma forma, pois a resposta a uma HEAD solicitação pode ser armazenada em cache.

exemplo Exemplo de condição de HTTP método 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 condições de caminho para definir regras que roteiam solicitações com base URL na solicitação (também conhecida como roteamento baseado em caminho).

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

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

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 HTTP caminho
  • /img/*

  • /img/*/pics

Exemplo de padrões de RPC caminho g
  • /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 é satisfeita 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 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 sequência 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 é 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 CIDR formato. Você pode usar ambos IPv4 e IPv6 endereços. Caracteres curinga não são compatíveis. Você não pode especificar 255.255.255.255/32 CIDR 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 é satisfeita por solicitações com um endereço IP de origem em um dos CIDR blocos especificados.

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

HTTPcabeçalhos e balanceadores de carga de aplicativos

HTTPsolicitações e HTTP respostas usam campos de cabeçalho para enviar informações sobre as HTTP mensagens. HTTPos cabeçalhos são adicionados automaticamente. Os campos de cabeçalho são pares de nome-valor separados por dois pontos e separados por um retorno de carro (CR) e um avanço de linha (LF). Um conjunto padrão de campos de HTTP cabeçalho é definido em RFC 2616, Cabeçalhos de mensagens. Também há HTTP cabeçalhos não padrão disponíveis que são adicionados automaticamente e amplamente usados pelos aplicativos. Alguns dos HTTP cabeçalhos não padrão têm um X-Forwarded prefixo. Os Application Load Balancers são compatíveis com os seguintes cabeçalhos X-Forwarded.

Para obter mais informações sobre HTTP conexões, consulte Roteamento de solicitações no Guia do Usuário do Elastic Load Balancing.

X-Forwarded-For

O cabeçalho da X-Forwarded-For solicitação ajuda a identificar o endereço IP de um cliente quando você usa um balanceador de HTTPS carga HTTP or. Como os balanceadores de carga interceptam o tráfego entre clientes e servidores, os logs de acesso do seu servidor vão conter apenas o endereço IP do balanceador de carga. Para ver o endereço IP do cliente, use o atributo routing.http.xff_header_processing.mode. Esse atributo permite que você modifique, preserve ou remova o X-Forwarded-For cabeçalho na HTTP solicitação antes que o Application Load Balancer envie a solicitação ao destino. Os valores possíveis para esse atributo são append, preserve e remove. O valor padrão desse atributo é append.

Importante

O cabeçalho X-Forwarded-For deve ser usado com cuidado devido ao potencial de riscos à segurança. As entradas só podem ser consideradas confiáveis se adicionadas por sistemas devidamente protegidos na rede.

Anexar

Por padrão, o Application Load Balancer armazena o endereço IP do cliente no cabeçalho de solicitação X-Forwarded-For e encaminha o cabeçalho para o seu servidor. Se o cabeçalho de solicitação X-Forwarded-For não estiver incluído na solicitação original, o balanceador de carga criará um com o endereço IP do cliente como o valor da solicitação. Caso contrário, o balanceador de carga anexará o endereço IP do cliente ao cabeçalho existente e encaminhará o cabeçalho para o seu servidor. O cabeçalho de solicitação X-Forwarded-For pode conter vários endereços IP separados por vírgula.

O cabeçalho de solicitação X-Forwarded-For leva a seguinte forma:

X-Forwarded-For: client-ip-address

Veja a seguir um exemplo de cabeçalho de solicitação X-Forwarded-For para um cliente com o endereço IP 203.0.113.7.

X-Forwarded-For: 203.0.113.7

Veja a seguir um exemplo de cabeçalho de X-Forwarded-For solicitação para um cliente com IPv6 endereço de2001:DB8::21f:5bff:febf:ce22:8a2e.

X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e

Quando o atributo de preservação da porta do cliente (routing.http.xff_client_port.enabled) estiver habilitado no balanceador de carga, o cabeçalho X-Forwarded-For da solicitação incluirá o client-port-number anexado ao client-ip-address, separado por dois pontos. Em seguida, o cabeçalho adotará a seguinte forma:

IPv4 -- X-Forwarded-For: client-ip-address:client-port-number
IPv6 -- X-Forwarded-For: [client-ip-address]:client-port-number

PoisIPv6, observe que quando o balanceador de carga anexa o client-ip-address ao cabeçalho existente, ele coloca o endereço entre colchetes.

Veja a seguir um exemplo de cabeçalho de X-Forwarded-For solicitação para um cliente com IPv4 endereço 12.34.56.78 e número de porta de8080.

X-Forwarded-For: 12.34.56.78:8080

Veja a seguir um exemplo de cabeçalho de X-Forwarded-For solicitação para um cliente com IPv6 endereço 2001:db8:85a3:8d3:1319:8a2e:370:7348 e número de porta de8080.

X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080

Preservar

O preserve modo no atributo garante que o X-Forwarded-For cabeçalho na HTTP solicitação não seja modificado de forma alguma antes de ser enviado aos destinos.

Remover

O remove modo no atributo remove o X-Forwarded-For cabeçalho na HTTP solicitação antes que ela seja enviada aos destinos.

nota

Se você habilitar o atributo de preservação da porta do cliente (routing.http.xff_client_port.enabled) e também selecionar preserve ou remove para o atributo routing.http.xff_header_processing.mode, o Application Load Balancer substituirá o atributo de preservação da porta do cliente. Dependendo do modo selecionado, ele mantém o cabeçalho X-Forwarded-For inalterado ou o remove antes de enviá-lo para os destinos.

A tabela a seguir mostra exemplos do cabeçalho X-Forwarded-For que o destino recebe quando você seleciona o modo append, preserve ou remove. Neste exemplo, o endereço IP do último salto é 127.0.0.1.

Descrição da solicitação

Exemplo de solicitação

XFFem append modo XFFem preserve modo XFFem remove modo
A solicitação é enviada sem XFF cabeçalho GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 Não está presente Não está presente
A solicitação é enviada com um XFF cabeçalho e um endereço IP do cliente. GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4 X-Forwarded-For: 127.0.0.4, 127.0.0.1 X-Forwarded-For: 127.0.0.4 Não está presente
A solicitação é enviada com um XFF cabeçalho com vários endereços IP do cliente. GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4, 127.0.0.8 X-Forwarded-For: 127.0.0.4, 127.0.0.8, 127.0.0.1 X-Forwarded-For: 127.0.0.4, 127.0.0.8 Não está presente
Para modificar, preservar ou remover o X-Forwarded-For cabeçalho usando o console
  1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Balanceador de carga.

  3. Selecione o load balancer.

  4. Na guia Atributos, escolha Editar.

  5. Na seção Configuração de tráfego, em Tratamento de pacotes, para X-Forwarded-For cabeçalho, escolha Anexar (padrão), Preservar ou Remover.

  6. Escolha Salvar alterações.

Para modificar, preservar ou remover o X-Forwarded-For cabeçalho usando o AWS CLI

Use o modify-load-balancer-attributescomando com o routing.http.xff_header_processing.mode atributo.

X-Forwarded-Proto

O cabeçalho da X-Forwarded-Proto solicitação ajuda você a identificar o protocolo (HTTPouHTTPS) que um cliente usou para se conectar ao seu balanceador de carga. Os logs de acesso do servidor contêm apenas o protocolo usado entre o servidor e o load balancer; eles não contêm informações sobre o protocolo usado entre o cliente e o load balancer. Para determinar o protocolo usado entre o cliente e o balanceador de carga, use o cabeçalho de solicitação X-Forwarded-Proto. O Elastic Load Balancing armazena o protocolo usado entre o cliente e o balanceador de carga no cabeçalho da solicitação X-Forwarded-Proto e encaminha o cabeçalho para seu servidor.

Seu aplicativo ou site pode usar o protocolo armazenado no cabeçalho da X-Forwarded-Proto solicitação para renderizar uma resposta que redireciona para a apropriada. URL

O cabeçalho de solicitação X-Forwarded-Proto leva a seguinte forma:

X-Forwarded-Proto: originatingProtocol

O exemplo a seguir contém um X-Forwarded-Proto cabeçalho de solicitação para uma solicitação originada do cliente como uma HTTPS solicitação:

X-Forwarded-Proto: https

X-Forwarded-Port

O cabeçalho de solicitação X-Forwarded-Port ajuda a identificar a porta de destino que o cliente usou para se conectar ao load balancer.