Oyentes para Equilibrador de carga de aplicación - Elastic Load Balancing

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Oyentes para Equilibrador de carga de aplicación

Un oyente es un proceso que comprueba las solicitudes de conexión utilizando el protocolo y el puerto configurados. Antes de comenzar a utilizar el Equilibrador de carga de aplicación, debe agregar al menos un oyente. Si su equilibrador de carga no cuenta con oyentes, no puede recibir tráfico de los clientes. Las reglas que definas para tus oyentes determinan cómo el balanceador de cargas dirige las solicitudes a los destinos que registras, como EC2 las instancias.

Configuración del oyente

Los oyentes son compatibles con los siguientes protocolos y puertos:

  • Protocolos: HTTP, HTTPS

  • Puertos: 1-65535

Puede utilizar un oyente HTTPS para trasladar la carga de cifrado y descifrado al equilibrador de carga, de modo que las aplicaciones puedan concentrarse en la lógica de negocio. Si el protocolo del oyente es HTTPS, debe implementar al menos un certificado de servidor SSL en el oyente. Para obtener más información, consulte Crear un oyente HTTPS para el equilibrador de carga de aplicaciones.

Si debe asegurarse de que los destinos descifren el tráfico HTTPS en lugar del equilibrador de carga, puede crear un Equilibrador de carga de red con un oyente TCP en el puerto 443. Con un oyente TCP, el equilibrador de carga transfiere el tráfico cifrado a los destinos sin descifrarlo. Para obtener más información, consulte la Guía del usuario de Equilibradores de carga de red.

Los balanceadores de carga de aplicaciones ofrecen soporte nativo para. WebSockets Puede convertir una conexión HTTP/1.1 existente en una WebSocket (wsowss) conexión mediante una actualización de la conexión HTTP. Al actualizar, la conexión TCP utilizada para las solicitudes (tanto al balanceador de carga como al destino) se convierte en una WebSocket conexión persistente entre el cliente y el destino a través del balanceador de cargas. Puedes utilizarla WebSockets con dispositivos de escucha HTTP y HTTPS. Las opciones que elija para su agente de escucha se aplican tanto a WebSocket las conexiones como al tráfico HTTP. Para obtener más información, consulta Cómo funciona el WebSocket protocolo en la Guía para CloudFront desarrolladores de Amazon.

Los equilibradores de carga de apliación proporcionan soporte nativo para HTTP/2 con oyentes HTTPS. Puede enviar hasta 128 solicitudes a la vez con una conexión HTTP/2. Se puede usar la versión del protocolo para enviar la solicitud a los destinos mediante HTTP/2. Para obtener más información, consulte Versión del protocolo. Como HTTP/2 usa las conexiones frontend de una forma más eficaz, es posible que observe que se establecen menos conexiones entre los clientes y el equilibrador de carga. No puede utilizar la característica server-push de HTTP/2.

Para obtener más información, consulte Enrutamiento de solicitudes en la Guía del usuario de Elastic Load Balancing.

Atributos del oyente

Los siguientes son los atributos de escucha de los balanceadores de carga de aplicaciones

routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name

Permite modificar el nombre del encabezado de la solicitud HTTP X-Amzn-Mtls-Clientcert-Serial-Number.

routing.http.request.x_amzn_mtls_clientcert_issuer.header_name

Le permite modificar el nombre del encabezado de la solicitud HTTP X-Amzn-Mtls-Clientcert-Issuer.

routing.http.request.x_amzn_mtls_clientcert_subject.header_name

Permite modificar el nombre del encabezado de la solicitud HTTP X-Amzn-Mtls-Clientcert-Subject.

routing.http.request.x_amzn_mtls_clientcert_validity.header_name

Permite modificar el nombre del encabezado de la solicitud HTTP X-Amzn-Mtls-Clientcert-Validity.

routing.http.request.x_amzn_mtls_clientcert_leaf.header_name

Permite modificar el nombre del encabezado de la solicitud HTTP X-Amzn-Mtls-Clientcert-Leaf.

routing.http.request.x_amzn_mtls_clientcert.header_name

Le permite modificar el nombre del encabezado de la solicitud HTTP X-Amzn-Mtls-Clientcert.

routing.http.request.x_amzn_tls_version.header_name

Permite modificar el nombre del encabezado de la solicitud HTTP de X-Amzn-Tls-Version.

routing.http.request.x_amzn_tls_cipher_suite.header_name

Le permite modificar el nombre del encabezado de la solicitud HTTP de X-Amzn-Tls-Cipher-Suite.

routing.http.response.server.enabled

Le permite permitir o eliminar el encabezado del servidor de respuesta HTTP.

routing.http.response.strict_transport_security.header_value

Informa a los navegadores de que solo se debe acceder al sitio mediante HTTPS y que cualquier intento futuro de acceder a él mediante HTTP debe convertirse automáticamente a HTTPS.

routing.http.response.access_control_allow_origin.header_value

Especifica qué orígenes pueden acceder al servidor.

routing.http.response.access_control_allow_methods.header_value

Devuelve qué métodos HTTP están permitidos cuando se accede al servidor desde un origen diferente.

routing.http.response.access_control_allow_headers.header_value

Especifica qué encabezados se pueden usar durante la solicitud.

routing.http.response.access_control_allow_credentials.header_value

Indica si el navegador debe incluir credenciales, como cookies o de autenticación, al realizar las solicitudes.

routing.http.response.access_control_expose_headers.header_value

Devuelve qué encabezados puede mostrar el navegador al cliente solicitante.

routing.http.response.access_control_max_age.header_value

Especifica durante cuánto tiempo se pueden almacenar en caché los resultados de una solicitud de verificación previa, en segundos.

routing.http.response.content_security_policy.header_value

Especifica las restricciones impuestas por el navegador para ayudar a minimizar el riesgo de determinados tipos de amenazas a la seguridad.

routing.http.response.x_content_type_options.header_value

Indica si se deben seguir los tipos de MIME anunciados en los encabezados de Content-Type y no se deben cambiar.

routing.http.response.x_frame_options.header_value

Indica si el navegador puede representar una página en un marco, iframe, incrustación u objeto.

Reglas del oyente

Cada oyente tiene una acción predeterminada, que se conoce también como regla predeterminada. La regla predeterminada no se puede eliminar y siempre se ejecuta en último lugar. Cada una consta de una prioridad, de una o varias acciones y de una o varias condiciones. Puede agregar y editar reglas en cualquier momento. Para obtener más información, consulte Editar una regla.

Reglas predeterminadas

Cuando crea un oyente, define acciones para la regla predeterminada. Las reglas predeterminadas no pueden tener condiciones. Si no se cumplen las condiciones de ninguna de las reglas del oyente, se realiza la acción de la regla predeterminada.

A continuación, se muestra un ejemplo de una regla predeterminada vista en la consola:

Regla predeterminada de un oyente.

Prioridad de las reglas

Cada regla tiene una prioridad. Las reglas se evalúan por orden de prioridad, desde el valor más bajo hasta el valor más alto. La regla predeterminada se evalúa en último lugar. Puede cambiar la prioridad de una regla no predeterminada en cualquier momento. No puede cambiar la prioridad de la regla predeterminada. Para obtener más información, consulte Actualizar la prioridad de una regla.

Acciones de las reglas

Cada acción de regla tiene un tipo, una prioridad y la información necesaria para realizar la acción. Para obtener más información, consulte Tipos de acción de regla.

Condiciones de las reglas

Cada condición de regla tiene un tipo e información de configuración. Cuando se cumplen las condiciones de una regla, se llevan a cabo sus acciones. Para obtener más información, consulte Tipos de condición de las reglas.

Tipos de acción de regla

Se admiten los siguientes tipos de acción para una regla de oyente:

authenticate-cognito

[Oyentes HTTPS] Utilice Amazon Cognito para autenticar a los usuarios. Para obtener más información, consulte Autenticación de usuarios mediante un Equilibrador de carga de aplicación.

authenticate-oidc

[Oyentes HTTPS] Utilice un proveedor de identidades compatible con OpenID Connect (OIDC) para autenticar a los usuarios.

fixed-response

Devuelve una respuesta HTTP personalizada. Para obtener más información, consulte Acciones de respuesta fija.

forward

Reenvíe las solicitudes a los grupos de destino especificados. Para obtener más información, consulte Acciones de reenvío.

redirect

Direcciona las solicitudes de una URL a otra. Para obtener más información, consulte Acciones de redirección.

Primero se realiza la acción con la prioridad más baja. Cada regla debe incluir exactamente una de las acciones siguientes: forward, redirect o fixed-response y debe ser la última acción que realizar.

Si la versión del protocolo es gRPC o HTTP/2, las únicas acciones admitidas son las acciones de forward.

Acciones de respuesta fija

Puede utilizar acciones fixed-response para omitir las solicitudes del cliente y devolver una respuesta HTTP personalizada. Puede utilizar esta acción para devolver un código de respuesta 2XX, 4XX o 5XX junto con un mensaje opcional.

Cuando se ejecuta una acción fixed-response, la acción y la URL del destino se graban en los registros de acceso. Para obtener más información, consulte Entradas de los registros de acceso. El número de acciones fixed-response correctas se registra en la métrica HTTP_Fixed_Response_Count. Para obtener más información, consulte Métricas del Equilibrador de carga de aplicación.

ejemplo Ejemplo de acción de respuesta fija para AWS CLI

Puede especificar una acción al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La acción siguiente envía una respuesta fija con el código de estado y cuerpo de mensaje especificados.

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

Acciones de reenvío

Puede utilizar acciones forward para direccionar solicitudes a uno o más grupos de destino. Si especifica varios grupos de destino para una acción forward, debe especificar una ponderación para cada grupo de destino. Cada ponderación de grupo de destino es un valor de 0 a 999. Las solicitudes que coinciden con una regla del oyente con los grupos de destino ponderados se distribuyen a estos grupos de destino en función de sus ponderaciones. Por ejemplo, si especifica dos grupos de destino, cada uno con una ponderación de 10, cada grupo de destino recibe la mitad de las solicitudes. Si especifica dos grupos de destino, uno con una ponderación de 10 y el otro con una ponderación de 20, el grupo de destino con una ponderación de 20 recibe el doble de solicitudes que el otro grupo de destino.

De forma predeterminada, la configuración de una regla para distribuir tráfico entre los grupos de destino ponderados no garantiza que se cumplan las sesiones persistente. Para asegurarse de que se respetan las sesiones persistente, habilite la persistencia del grupo de destino para la regla. Cuando el balanceador de cargas dirige por primera vez una solicitud a un grupo objetivo ponderado, genera una cookie con el nombre AWSALBTG que codifica la información sobre el grupo objetivo seleccionado, cifra la cookie e incluye la cookie en la respuesta al cliente. El cliente debe incluir la cookie que recibe en las solicitudes posteriores al equilibrador de carga. Cuando el equilibrador de carga recibe una solicitud que coincide con una regla con la persistencia del grupo de destino activada y que contiene la cookie, la solicitud se direcciona al grupo de destino especificado en la cookie.

Los equilibradores de carga de aplicaciones no admiten valores de cookies codificados como URL.

Con las solicitudes CORS (intercambio de recursos de varios orígenes), algunos navegadores requieren SameSite=None; Secure para habilitar la persistencia. En este caso, Elastic Load Balancing genera una segunda cookie AWSALBTGCORS, que incluye la misma información que la cookie de adherencia original más este SameSite atributo. Los clientes reciben ambas cookies.

ejemplo Ejemplo de acción de reenvío con un grupo de destino

Puede especificar una acción al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La acción siguiente reenvía las solicitudes al grupo de destino especificado.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" } ] } } ]
ejemplo Ejemplo de acción de reenvío con dos grupos de destino ponderados

La siguiente acción reenvía las solicitudes a los dos grupos de destino especificados, basándose en la ponderación 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 } ] } } ]
ejemplo Ejemplo de acción de reenvío con la persistencia activada

Si tiene una acción de reenvío con varios grupos de destino y uno o más de ellos tienen habilitadas las sesiones persistente, debe habilitar la persistencia del grupo de destino.

La siguiente acción reenvía las solicitudes a los dos grupos de destino especificados, con la persistencia del grupo de destino activada. Las solicitudes que no contienen la cookie de permanencia se enrutan en función de la ponderación 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 } } } ]

Acciones de redirección

Puede usar acciones redirect para redirigir las solicitudes de los clientes de una URL a otra. Puede configurar las acciones de redirección como temporales (HTTP 302) o permanentes (HTTP 301), en función de sus necesidades.

Un URI está formado por los siguientes componentes:

protocol://hostname:port/path?query

Debe modificar al menos uno de los siguientes componentes para evitar que se produzca un bucle de redirección: protocolo, nombre de host, puerto o ruta. Los elementos que no se modifiquen conservarán sus valores originales.

protocolo

Protocolo (HTTP o HTTPS). Puede redirigir HTTP a HTTP, HTTP a HTTPS y HTTPS a HTTPS. No puede redirigir HTTPS a HTTP.

hostname

Nombre del host. Un nombre de host no distingue entre mayúsculas y minúsculas, puede tener hasta 128 caracteres de longitud y constar de caracteres alfanuméricos, comodines (* y ?) y guiones (-).

puerto

Puerto (entre 1 y 65535).

ruta

Ruta absoluta, comenzando desde la primera “/”. Una ruta distingue entre mayúsculas y minúsculas, puede tener hasta 128 caracteres de longitud y constar de caracteres alfanuméricos, comodines (* y ?), & (mediante &) y los caracteres especiales siguientes: _-.$/~"'@:+.

consulta

Parámetros de la consulta. La longitud máxima es de 128 caracteres.

Puede reutilizar los componentes del URI de la URL original en la URL de destino utilizando las siguientes palabras clave reservadas:

  • #{protocol} - Mantiene el protocolo. Se usa en los componentes de protocolo y consulta.

  • #{host} - Mantiene el dominio. Se usa en los componentes de nombre de host, ruta y consulta.

  • #{port} - Mantiene el puerto. Se usa en los componentes de puerto, ruta y consulta.

  • #{path} - Mantiene la ruta. Se usa en los componentes de ruta y consulta.

  • #{query} - Mantiene los parámetros de consulta. Se usa en el componente de consulta.

Cuando se ejecuta una acción redirect, esta acción se graba en los registros de acceso. Para obtener más información, consulte Entradas de los registros de acceso. El número de acciones redirect correctas se registra en la métrica HTTP_Redirect_Count. Para obtener más información, consulte Métricas del Equilibrador de carga de aplicación.

ejemplo Ejemplo de acciones de redirección mediante la consola

La siguiente regla configura una redirección permanente a una URL que utiliza el protocolo HTTPS y el puerto especificado (40443), pero mantiene el nombre de host, la ruta y los parámetros de consulta originales. Esta pantalla es equivalente a “https://#{host}:40443/#{path}?#{query}”.

Regla que redirige la solicitud a una URL que usa el protocolo HTTPS y el puerto especificado (40443), pero mantiene el dominio, la ruta y los parámetros de consulta originales de la URL de origen.

La siguiente regla configura una redirección permanente a una URL que utiliza el protocolo, el puerto, el nombre de host y los parámetros de consulta originales y utiliza la palabra clave #{path} para crear una ruta modificada. Esta pantalla es equivalente a “#{protocol}://#{host}:#{port}/new/#{path}?#{query}”.

Regla que redirige la solicitud a una URL que mantiene el protocolo, el puerto, el nombre de host y los parámetros de consulta originales y usa la palabra clave #{path} para crear una ruta modificada.
ejemplo Ejemplo de acción de redireccionamiento para el AWS CLI

Puede especificar una acción al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La siguiente acción redirige una solicitud HTTP a una solicitud HTTPS en el puerto 443, con el mismo nombre de host, ruta y cadena de consulta que la solicitud HTTP.

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

Tipos de condición de las reglas

Se admiten los siguientes tipos de condición para una regla:

host-header

Ruta en función de el nombre de host de cada solicitud. Para obtener más información, consulte Condiciones de host.

http-header

Ruta en función de los encabezados HTTP de cada solicitud. Para obtener más información, consulte Condiciones de los encabezados HTTP.

http-request-method

Ruta en función de el método de solicitud HTTP de cada solicitud. Para obtener más información, consulte Condiciones de método de solicitud HTTP.

path-pattern

Ruta basada en los patrones de ruta de la solicitud URLs. Para obtener más información, consulte Condiciones de ruta.

query-string

Ruta en función de pares clave/valor o en valores en las cadenas de consulta. Para obtener más información, consulte Condiciones de cadena de consulta.

source-ip

Ruta en función de la dirección IP de origen de cada solicitud. Para obtener más información, consulte Condiciones de dirección IP de origen.

Cada regla puede incluir también hasta una de las siguientes condiciones: host-header, http-request-method, path-pattern y source-ip. Cada regla puede incluir también una o más de las siguientes condiciones: http-header y query-string.

Puede especificar hasta tres evaluaciones de coincidencia por condición. Por ejemplo, para cada condición http-header, puede especificar hasta tres cadenas que comparar con el valor del encabezado HTTP en la solicitud. La condición se satisface si una de las cadenas coincide con el valor del encabezado HTTP. Para requerir que todas las cadenas sean una coincidencia, cree una condición por evaluación de coincidencia.

Puede especificar hasta cinco evaluaciones de coincidencia por regla. Por ejemplo, puede crear una regla con cinco condiciones donde cada condición tenga una evaluación de coincidencia.

Puede incluir caracteres comodín en las evaluaciones de coincidencia para http-header, host-header, path-pattern y query-string. Hay un límite de cinco caracteres comodín por regla.

Las reglas se aplican solo a los caracteres ASCII visibles; se excluyen los caracteres de control (0x00 a 0x1f y 0x7f).

Para ver demostraciones, consulte Direccionamiento de solicitudes avanzado.

Condiciones de los encabezados HTTP

Puede utilizar las condiciones de encabezado HTTP para configurar reglas que dirijan solicitudes basadas en los encabezados HTTP para la solicitud. Puede especificar los nombres de campos de encabezado HTTP estándar o personalizados. El nombre del encabezado y la evaluación de coincidencia no distinguen entre mayúsculas y minúsculas. Los siguientes caracteres comodín se admiten en las cadenas de comparación: * (coincide con 0 o más caracteres) y ? (coincide exactamente con 1 carácter). Los caracteres comodín no se admiten en el nombre del encabezado.

ejemplo Ejemplo de condición de encabezado HTTP para AWS CLI

Puede especificar condiciones al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La condición siguiente se satisface mediante solicitudes con un encabezado usuario-agente que coincida con una de las cadenas especificadas.

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

Condiciones de método de solicitud HTTP

Puede utilizar las condiciones de método de solicitud HTTP para configurar reglas que dirijan solicitudes basadas en el método de solicitud HTTP de la solicitud. Puede especificar métodos HTTP estándar o personalizados. La evaluación de coincidencia distingue entre mayúsculas y minúsculas. Los caracteres comodín no se admiten; por tanto, el nombre del método tiene que ser una coincidencia exacta.

Le recomendamos direccionar las solicitudes GET y HEAD de la misma forma, porque la respuesta a una solicitud HEAD se podría almacenar en caché.

ejemplo Ejemplo de condición de método HTTP para el AWS CLI

Puede especificar condiciones al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La condición siguiente se satisface mediante solicitudes que utilizan el método especificado.

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

Condiciones de host

Puede utilizar las condiciones de host para definir reglas que direccionen solicitudes en función del nombre del host en el encabezado del host (lo que también se conoce como direccionamiento basado en host). Esto permite admitir varios subdominios y diferentes dominios de nivel superior a través de un único equilibrador de carga.

Los nombre de host no distinguen entre mayúsculas y minúsculas, su longitud máxima es de 128 caracteres y pueden contener cualquiera de los siguientes caracteres:

  • A–Z, a–z, 0–9

  • - .

  • * (coincide con 0 o más caracteres)

  • ? (coincide exactamente con 1 carácter)

Debe incluir al menos un carácter “.”. Solo puede contener caracteres alfabéticos detrás del carácter “.” final.

Ejemplos de nombres de host
  • example.com

  • test.example.com

  • *.example.com

La regla *.example.com coincide con test.example.com pero no coincide con example.com.

ejemplo Ejemplo de condición de encabezado de host para AWS CLI

Puede especificar condiciones al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La condición siguiente se satisface mediante solicitudes con un encabezado de host que coincide con la cadena especificada.

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

Condiciones de ruta

Puede utilizar las condiciones de ruta para definir reglas que direccionen las solicitudes en función de la dirección URL de la solicitud (lo que también se conoce como direccionamiento basado en ruta).

El patrón de ruta se aplica únicamente a la ruta de la dirección URL, no a sus parámetros de consulta. Se aplica solo a los caracteres ASCII visibles; se excluyen los caracteres de control (0x00 a 0x1f y 0x7f).

La evaluación de la regla se realiza solo después de que se produzca la normalización del URI.

Los patrones de ruta distinguen entre mayúsculas y minúsculas, su longitud máxima es de 128 caracteres y pueden contener cualquiera de los siguientes caracteres.

  • A–Z, a–z, 0–9

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

  • & (usando &)

  • * (coincide con 0 o más caracteres)

  • ? (coincide exactamente con 1 carácter)

Si la versión del protocolo es gRPC, las condiciones pueden ser específicas de un paquete, un servicio o un método.

Ejemplos de patrones de ruta HTTP
  • /img/*

  • /img/*/pics

Ejemplos de patrones de ruta gRPC
  • /package

  • /package.service

  • /package.service/method

El patrón de ruta se utiliza para direccionar solicitudes, no para modificarlas. Por ejemplo, si una ruta tiene el patrón de /img/*, la regla reenviará una solicitud para /img/picture.jpg al grupo de destino especificado como una solicitud de /img/picture.jpg.

ejemplo Ejemplo de condición de patrón de ruta para el AWS CLI

Puede especificar condiciones al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La condición siguiente se satisface mediante solicitudes con una dirección URL que contenga la cadena especificada.

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

Condiciones de cadena de consulta

Puede utilizar condiciones de cadena de consulta para configurar reglas que dirijan solicitudes basadas en pares clave/valor o valores en la cadena de consulta. La evaluación de coincidencia no distingue entre mayúsculas y minúsculas. Se admiten los siguientes caracteres comodín: * (coincide con 0 o más caracteres) y ? (coincide exactamente con 1 carácter).

ejemplo Ejemplo de condición de cadena de consulta para AWS CLI

Puede especificar condiciones al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La condición siguiente la satisfacen las solicitudes con una cadena de consulta que incluye un par clave/valor de “version=v1” o cualquier clave definida en “example”.

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

Condiciones de dirección IP de origen

Puede utilizar las condiciones de dirección IP de origen para configurar reglas que direccionen solicitudes en función de la dirección IP de origen de la solicitud. La dirección IP se debe especificar en formato CIDR. Puede utilizar ambas IPv6 direcciones IPv4 y. No se admiten caracteres comodín. No puede especificar el CIDR 255.255.255.255/32 para la condición de la regla IP de origen.

Si un cliente está detrás de un proxy, esta es la dirección IP del proxy, no la dirección IP del cliente.

Las direcciones del X-Forwarded-For encabezado no cumplen esta condición. Para buscar direcciones en el X-Forwarded-For encabezado, utilice una http-header condición.

ejemplo Ejemplo de condición de IP de origen para AWS CLI

Puede especificar condiciones al crear o modificar una regla. Para obtener más información, consulte los comandos create-rule y modify-rule. La condición siguiente se satisface mediante solicitudes con una dirección IP de origen en uno de los bloques de CIDR especificados.

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

Encabezados HTTP y balanceadores de tipo equilibrador de carga de aplicaciones

Las solicitudes y respuestas HTTP utilizan campos de encabezado para enviar información sobre los mensajes HTTP. Los encabezados HTTP se añaden automáticamente. Los campos de encabezado son pares nombre-valor separados por signos de dos puntos, separados a su vez por un retorno de carro (CR) y un salto de línea (LF). Un conjunto estándar de campos de encabezado HTTP se define en RFC 2616, Encabezados de mensaje. También hay encabezados HTTP no estándar disponibles que se agregan automáticamente y que se suelen utilizar ampliamente en las aplicaciones. Algunos de los encabezados HTTP no estándar tienen un prefijo X-Forwarded. Los Equilibradores de carga de aplicación admiten los siguientes encabezados X-Forwarded.

Para obtener más información acerca de las conexiones HTTP, consulte Enrutamiento de solicitudes en la Guía del usuario de Elastic Load Balancing.

X-Forwarded-For

El encabezado de solicitud X-Forwarded-For ayuda a identificar la dirección IP de un cliente cuando se utiliza un equilibrador de carga HTTP o HTTPS. Dado que los equilibradores de carga interceptan el tráfico entre los clientes y los servidores, los registros de acceso al servidor contienen únicamente la dirección IP del equilibrador de carga. Para ver la dirección IP del cliente, utilice el atributo routing.http.xff_header_processing.mode. Este atributo permite modificar, conservar o eliminar el encabezado X-Forwarded-For en la solicitud HTTP antes de que el Equilibrador de carga de aplicación envíe la solicitud al destino. Los valores posibles para este atributo son append, preserve y remove. El valor predeterminado de este atributo es append.

importante

El encabezado X-Forwarded-For debe usarse con precaución debido a los posibles riesgos de seguridad. Las entradas solo pueden considerarse fiables si las agregan sistemas que estén debidamente protegidos dentro de la red.

Anexar

De manera predeterminada, el Equilibrador de carga de aplicación almacena la dirección IP del cliente en el encabezado de solicitud X-Forwarded-For y se lo pasa al encabezado de su servidor. Si el encabezado de solicitud X-Forwarded-For no se incluye en la solicitud original, el equilibrador de carga crea uno con la dirección IP del cliente como el valor de la solicitud. De lo contrario, el equilibrador de carga agrega la dirección IP del cliente al encabezado existente y se lo pasa al servidor. El encabezado de solicitud X-Forwarded-For puede contener varias direcciones IP separadas por comas.

El encabezado de solicitud X-Forwarded-For tiene el siguiente formato:

X-Forwarded-For: client-ip-address

A continuación se muestra un ejemplo de un encabezado de solicitud X-Forwarded-For cuya dirección IP de cliente es 203.0.113.7.

X-Forwarded-For: 203.0.113.7

A continuación se muestra un ejemplo de encabezado de X-Forwarded-For solicitud para un cliente con una IPv6 dirección de2001:DB8::21f:5bff:febf:ce22:8a2e.

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

Cuando el atributo de conservación del puerto del cliente (routing.http.xff_client_port.enabled) está habilitado en el equilibrador de carga, el encabezado de la solicitud X-Forwarded-For incluye el atributo client-port-number adjunto al atributo client-ip-address, separado por dos puntos. El encabezado luego tiene el siguiente formato:

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

Por IPv6 ejemplo, ten en cuenta que cuando el balanceador de cargas añade la dirección client-ip-address al encabezado existente, incluye la dirección entre corchetes.

A continuación se muestra un ejemplo de encabezado de X-Forwarded-For solicitud para un cliente con una IPv4 dirección 12.34.56.78 y un número de puerto de. 8080

X-Forwarded-For: 12.34.56.78:8080

A continuación se muestra un ejemplo de encabezado de X-Forwarded-For solicitud para un cliente con una IPv6 dirección 2001:db8:85a3:8d3:1319:8a2e:370:7348 y un número de puerto de8080.

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

Conservar

El modo preserve del atributo garantiza que el encabezado X-Forwarded-For de la solicitud HTTP no se modifique de ninguna manera antes de enviarse a los destinos.

Quitar

El modo remove del atributo elimina el encabezado X-Forwarded-For de la solicitud HTTP antes de enviarla a los destinos.

nota

Si habilita el atributo de conservación del puerto del cliente (routing.http.xff_client_port.enabled) y también selecciona preserve o remove para el atributo routing.http.xff_header_processing.mode, el Equilibrador de carga de aplicación anula el atributo de conservación del puerto del cliente. Mantiene el encabezado X-Forwarded-For sin cambios o lo elimina según el modo que seleccione antes de enviarlo a los destinos.

En la siguiente tabla se muestran ejemplos del encabezado X-Forwarded-For que recibe el destino al seleccionar el modo append, preserve o el modo remove. En este ejemplo, la dirección IP de la última transferencia es 127.0.0.1.

Descripción de la solicitud

Ejemplo de solicitud

XFF en modo append XFF en modo preserve XFF en modo remove
La solicitud se envía sin encabezado XFF GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 No presente No presente
La solicitud se envía con un encabezado XFF y una dirección IP de 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 No presente
La solicitud se envía con un encabezado XFF con varias direcciones IP de 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 No presente
Para modificar, conservar o eliminar el X-Forwarded-For encabezado mediante la consola
  1. Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Load Balancers.

  3. Seleccione el equilibrador de carga.

  4. En la pestaña Atributos, seleccione Editar.

  5. En la sección Configuración del tráfico, en Gestión de paquetes, en el X-Forwarded-For encabezado, selecciona Añadir (predeterminado), Conservar o Eliminar.

  6. Elija Guardar cambios.

Para modificar, conservar o eliminar el X-Forwarded-For encabezado mediante el AWS CLI

Utilice el modify-load-balancer-attributescomando con el routing.http.xff_header_processing.mode atributo.

X-Forwarded-Proto

El encabezado de solicitud X-Forwarded-Proto ayuda a identificar el protocolo (HTTP o HTTPS) que un cliente utiliza para conectarse al equilibrador de carga. Los registros de acceso al servidor contienen únicamente el protocolo que se utiliza entre el servidor y el equilibrador de carga; sin embargo, no contienen información sobre el protocolo utilizado entre el cliente y el equilibrador de carga. Para determinar el protocolo utilizado entre el cliente y el equilibrador de carga, utilice el encabezado de solicitud X-Forwarded-Proto. Elastic Load Balancing almacena el protocolo utilizado entre el cliente y el equilibrador de carga en el encabezado de solicitud X-Forwarded-Proto y se lo pasa al servidor.

La aplicación o el sitio web pueden utilizar el protocolo almacenado en el encabezado de solicitud X-Forwarded-Proto para generar una respuesta que redirija a la URL correspondiente.

El encabezado de solicitud X-Forwarded-Proto tiene el siguiente formato:

X-Forwarded-Proto: originatingProtocol

El siguiente ejemplo contiene un encabezado de solicitud X-Forwarded-Proto correspondiente a una solicitud originada en el cliente como solicitud HTTPS:

X-Forwarded-Proto: https

X-Forwarded-Port

El encabezado de solicitud X-Forwarded-Port ayuda a identificar el puerto de destino que el cliente utiliza para conectarse al equilibrador de carga.