Compartir a través de


Variables de servidor del conjunto de reglas de Azure Front Door

Se aplica a: ✔️ Front Door Standard ✔️ Front Door Premium

Las variables de servidor del conjunto de reglas proporcionan acceso a la información estructurada sobre la solicitud cuando trabaja con Conjunto de reglas.

Cuando se usan las condiciones de coincidencia del conjunto de reglas, las variables de servidor están disponibles como condiciones de coincidencia para que pueda identificar las solicitudes con propiedades específicas.

Cuando utiliza acciones de conjunto de reglas, puede utilizar variables de servidor para modificar dinámicamente los encabezados de solicitud y respuesta, y reescribir las URL, las rutas de acceso y las cadenas de consulta, por ejemplo, cuando se carga una nueva página o cuando se envía un formulario.

Nota:

Las variables de servidor solo están disponibles con los niveles Estándar y Premium de Azure Front Door.

Variables admitidas

Nombre de la variable Descripción
socket_ip La dirección IP de la conexión directa con el perímetro de Azure Front Door. Si el cliente usaba un proxy HTTP o un equilibrador de carga para enviar la solicitud, el valor de socket_ip es la dirección IP del proxy o del equilibrador de carga.
Para acceder a esta variable de servidor en una condición de coincidencia, use Dirección de socket.
client_ip Dirección IP del cliente que realizó la solicitud original. Si hubiera un encabezado X-Forwarded-For en la solicitud, la dirección IP del cliente se seleccionaría del mismo encabezado.
Para tener acceso a esta variable de servidor en una condición de coincidencia, use Dirección remota y configure el operador en Coincidencia de IPSin coincidencia de IP.
client_port Puerto IP del cliente que realizó la solicitud.
Para acceder a esta variable de servidor en una condición de coincidencia, use Puerto de cliente.
hostname Nombre de host de la solicitud del cliente.
Para acceder a esta variable de servidor en una condición de coincidencia, use Nombre de host.
geo_country Indica el país o región de origen del solicitante mediante su código de país o región.
Para tener acceso a esta variable de servidor en una condición de coincidencia, use Dirección remota y configure el operador como Coincidencia de geoárea o Sin coincidencia de geoárea.
http_method Método usado para realizar la solicitud de URL, como GET o POST.
Para acceder a esta variable de servidor en una condición de coincidencia, use Método de solicitud.
http_version Protocolo de solicitud. Normalmente HTTP/1.0, HTTP/1.1 o HTTP/2.0.
Para acceder a esta variable de servidor en una condición de coincidencia, use Versión de HTTP.
query_string La lista de pares de variable-valor que aparecen después de ? en la dirección URL solicitada.
Por ejemplo, en la solicitud http://contoso.com:8080/article.aspx?id=123&title=fabrikam, el valor query_string es id=123&title=fabrikam.
Para acceder a esta variable de servidor en una condición de coincidencia, use Cadena de consulta.
request_scheme Esquema de solicitud: http o https.
Para acceder a esta variable de servidor en una condición de coincidencia, use Protocolo de solicitud.
request_uri El URI original completo de la solicitud (con argumentos).
Por ejemplo, en la solicitud http://contoso.com:8080/article.aspx?id=123&title=fabrikam, el valor request_uri es http://contoso.com:8080/article.aspx?id=123&title=fabrikam.
Para acceder a esta variable de servidor en una condición de coincidencia, use Dirección URL de solicitud.
ssl_protocol El protocolo de una conexión TLS establecida.
Para acceder a esta variable de servidor en una condición de coincidencia, use Protocolo de SSL.
server_port El puerto del servidor que ha aceptado una solicitud.
Para acceder a esta variable de servidor en una condición de coincidencia, use Puerto de servidor.
url_path Identifica el recurso específico en el host al que el cliente web quiere acceder. Esta es la parte del URI de solicitud sin los argumentos o la barra diagonal inicial.
Por ejemplo, en la solicitud http://contoso.com:8080/article.aspx?id=123&title=fabrikam, el valor url_path es article.aspx.
Azure Front Door admite la captura dinámica de la ruta de acceso URL con una variable de servidor {url_path:seg#} y convierte la ruta de acceso URL a minúsculas o mayúsculas con {url_path.tolower} o {url_path.toupper}. Para obtener más información, vea Formato de variable de servidor y Variables de servidor.
Para acceder a esta variable de servidor en una condición de coincidencia, use la condición de Ruta de acceso de solicitud.
http_req_header_<headername> Captura el valor de un encabezado de solicitud. Por ejemplo, para el encabezado de solicitud Device: Desktop, la variable es http_req_header_Device, el valor de esta variable es Desktop.
El nombre de encabezado de la sintaxis de variable admite caracteres alfanuméricos y guiones (a-z, A-Z, 0-9 y "-").
http_req_arg_<querystringkeyname> Captura el valor de un par clave-valor de una cadena de consulta. Por ejemplo, en la solicitud http://contoso.com:8080/article.aspx?id=123&title=fabrikam, la variable es http_req_header_id, el valor de esta variable es 123.
La clave de cadena de consulta de la sintaxis de variable admite caracteres alfanuméricos y guiones (a-z, A-Z, 0-9 y "-").
http_resp_header_<headername> Captura el valor de un encabezado de respuesta desde el origen. Por ejemplo, para un encabezado de respuesta Access-Control-Allow-Origin https://learn.microsoft.com, la variable es http_req_header_ encabezado Access-Control-Allow-Origin, el valor de esta variable es https://learn.microsoft.com.
El nombre de encabezado de la sintaxis de variable admite caracteres alfanuméricos y guiones (a-z, A-Z, 0-9 y "-").

Formato de variables de servidor

Cuando trabaje con acciones de conjunto de reglas, especifique variables de servidor con los siguientes formatos:

  • {variable}: Incluye toda la variable de servidor. Por ejemplo, si la dirección IP del cliente es 111.222.333.444, el token {client_ip} se evaluaría como 111.222.333.444.
  • {variable:offset}: Incluye la variable de servidor después de un desplazamiento específico hasta el final de la variable. El desplazamiento es de base cero. Por ejemplo, si la dirección IP del cliente es 111.222.333.444, el token {client_ip:3} se evaluaría como .222.333.444.
  • {variable:offset:length}: incluya la variable de servidor después de un desplazamiento específico, hasta la longitud especificada. El desplazamiento es de base cero. Por ejemplo, cuando la variable var es 'AppId=01f592979c584d0f9d679db3e66a3e5e',
    • Desplazamientos dentro del intervalo, sin longitudes: {var:0} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:6} = 01f592979c584d0f9d679db3e66a3e5e, {var:-8} = e66a3e5e
    • Desplazamientos fuera del intervalo, sin longitudes: {var:-128} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:128} = null
    • Desplazamientos y longitudes dentro del intervalo: {var:0:5} = AppId, {var:7:7} = 1f59297, {var:7:-7} = 1f592979c584d0f9d679db3e
    • Longitudes de cero: {var:0:0} = null, {var:4:0} = null
    • Desplazamientos dentro del rango y longitudes fuera del rango: {var:0:100} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:5:100} = =01f592979c584d0f9d679db3e66a3e5e, {var:0:-48} = null, {var:4:-48} = null
    • Para experimentar con el funcionamiento de {variable:offset:length}, abra un terminal de Bash de Linux o use el terminal de Bash en Azure Cloud Shell. Escriba el ejemplo siguiente en el terminal y examine la salida para comprender cómo se comporta la extracción de subcadena.
variable=helloworld123; echo ${variable:5} #Output = world123
variable=helloworld123; echo ${variable:0:5}  #Output = hello

Nota:

En Bash, se requiere un espacio antes de un número negativo en la expansión de parámetros para evitar errores de sintaxis.

variable=helloworld123; echo ${variable: -3:3} #Output=123 
variable=helloworld123; echo ${variable:5: -3} #Output = world
  • {url_path:seg#}: Permitir que los usuarios capturen y usen el segmento de la ruta de la URL deseado en Redirecciones de URLs, Reescrituras de URLs o cualquier acción significativa. El usuario también puede capturar varios segmentos mediante el mismo estilo que la captura de substring {url_path:seg1:3}. Por ejemplo, para un patrón de origen /id/12345/default y una dirección URL reescritura de destino /{url_path:seg1}/home, la ruta de acceso URL esperada después de volver a escribir es /12345/home. Para una captura de varios segmentos, cuando el patrón de origen es /id/12345/default/location/test, un destino de reescritura de dirección URL /{url_path:seg1:3}/home da como resultado /12345/default/location/home. La captura de segmento incluye la ruta de acceso de ubicación, por lo que si la ruta es /match/*, el segmento 0 coincidirá.

    Offset corresponde al índice del segmento de inicio y la longitud hace referencia al número de segmentos que se van a capturar, incluido el del índice = desplazamiento.

    Suponiendo que el desplazamiento y la longitud son positivos, se aplica la siguiente lógica:

    • Si no se incluye la longitud, capture el segmento en el índice = desplazamiento.
    • Cuando se incluye la longitud, capture segmentos del índice = desplazamiento hasta el índice = desplazamiento + longitud.

    También se controlan los siguientes casos especiales:

    • Si el desplazamiento es negativo, cuente hacia atrás desde el final de la ruta de acceso para obtener el segmento inicial.
    • Si offset es un valor negativo mayor o igual que el número de segmentos, establezca en 0.
    • Si el desplazamiento es mayor que el número de segmentos, el resultado está vacío.
    • Si la longitud es 0, devuelve el único segmento especificado por desplazamiento
    • Si la longitud es negativa, trátalo como un segundo desplazamiento y calcula hacia atrás desde el final de la ruta. Si el valor es menor que el desplazamiento, se produce una cadena vacía.
    • Si la longitud es mayor que el número de segmentos, devuelva lo que permanece en la ruta de acceso.
  • {url_path.tolower} / {url_path.toupper}: Convertir la ruta URL a minúsculas o mayúsculas. Por ejemplo, un destino {url_path.tolower} en la reescritura/redirección de direcciones URL para /lowercase/ABcDXyZ/EXAMPLE resulta en /lowercase/abcdxyz/example. Un destino {url_path.toupper} en una reescritura o redirección de URL para /ABcDXyZ/example da como resultado /ABCDXYZ/EXAMPLE.

Acciones admitidas del conjunto de reglas

Las variables de servidor se admiten en las siguientes acciones de conjunto de reglas:

Pasos siguientes