-
-
-
Configuración de Citrix ADC para Citrix Virtual Apps and Desktops
-
Preferencia de zona alimentada de Equilibrio de carga de servidor global (GSLB)
-
Implemente una plataforma de publicidad digital en AWS con Citrix ADC
-
Mejorar el análisis de Clickstream en AWS mediante Citrix ADC
-
Citrix ADC en una nube privada administrada por Microsoft Windows Azure Pack y Cisco ACI
-
-
Implementar una instancia de Citrix ADC VPX
-
Instalar una instancia de Citrix ADC VPX en un servidor desnudo
-
Instalar una instancia de Citrix ADC VPX en Citrix Hypervisor
-
Instalar una instancia de Citrix ADC VPX en la nube de VMware en AWS
-
Instalar una instancia de Citrix ADC VPX en servidores Microsoft Hyper-V
-
Instalar una instancia de Citrix ADC VPX en la plataforma Linux-KVM
-
Requisitos previos para instalar dispositivos virtuales Citrix ADC VPX en la plataforma Linux-KVM
-
Aprovisionamiento de Citrix ADC Virtual Appliance mediante OpenStack
-
Aprovisionamiento de Citrix ADC Virtual Appliance mediante Virtual Machine Manager
-
Configuración de Citrix ADC Virtual Appliances para utilizar la interfaz de red SR-IOV
-
Configuración de Citrix ADC Virtual Appliances para utilizar la interfaz de red PCI Passthrough
-
Aprovisionamiento de Citrix ADC Virtual Appliance mediante el programa virsh
-
Aprovisionamiento de Citrix ADC Virtual Appliance con SR-IOV, en OpenStack
-
-
Implementar una instancia de Citrix ADC VPX en AWS
-
Implementar una instancia independiente de Citrix ADC VPX en AWS
-
Servidores de equilibrio de carga en diferentes zonas de disponibilidad
-
Implementar un par de alta disponibilidad VPX con direcciones IP privadas en diferentes zonas de AWS
-
Agregar el servicio de escalado automático de AWS de back-end
-
Configurar una instancia de Citrix ADC VPX para utilizar la interfaz de red SR-IOV
-
Configurar una instancia de Citrix ADC VPX para utilizar redes mejoradas con AWS ENA
-
Implementar una instancia de Citrix ADC VPX en Microsoft Azure
-
Arquitectura de red para instancias de Citrix ADC VPX en Microsoft Azure
-
Configurar varias direcciones IP para una instancia independiente de Citrix ADC VPX
-
Configurar una configuración de alta disponibilidad con varias direcciones IP y NIC
-
Configurar una instancia de Citrix ADC VPX para usar redes aceleradas de Azure
-
Configurar nodos HA-INC mediante la plantilla de alta disponibilidad de Citrix con ILB de Azure
-
Configurar GSLB en una configuración de alta disponibilidad en espera activa
-
Configurar grupos de direcciones (IIP) para un dispositivo Citrix Gateway
-
Scripts de PowerShell adicionales para la implementación de Azure
-
Implementar una instancia de Citrix ADC VPX en Google Cloud Platform
-
Automatizar la implementación y las configuraciones de Citrix ADC
-
Soluciones para proveedores de servicios de telecomunicaciones
-
Tráfico de plano de control de equilibrio de carga basado en los protocolos de diameter, SIP y SMPP
-
Utilización del ancho de banda mediante la funcionalidad de redirección de caché
-
Optimización TCP de Citrix ADC
-
Autenticación, autorización y auditoría del tráfico de aplicaciones
-
Cómo funciona la autenticación, la autorización y la auditoría
-
Componentes básicos de configuración de autenticación, autorización y auditoría
-
Autorizar el acceso de usuario a los recursos de la aplicación
-
Citrix ADC como proxy del servicio de federación de Active Directory
-
Citrix Gateway local como proveedor de identidades para Citrix Cloud
-
Compatibilidad de configuración para el atributo de cookie SameSite
-
Configuración de autenticación, autorización y auditoría para protocolos de uso común
-
Solucionar problemas relacionados con la autenticación y la autorización
-
-
-
-
Configuración de la expresión de directiva avanzada: Introducción
-
Expresiones de directiva avanzadas: Trabajar con fechas, horas y números
-
Expresiones de directiva avanzadas: Análisis de datos HTTP, TCP y UDP
-
Expresiones de directiva avanzadas: Análisis de certificados SSL
-
Expresiones de directivas avanzadas: Direcciones IP y MAC, rendimiento, ID de VLAN
-
Expresiones de directiva avanzadas: Funciones de análisis de flujo
-
Ejemplos de resumen de expresiones y directivas de sintaxis predeterminadas
-
Ejemplos de tutoriales de directivas de sintaxis predeterminadas para reescribir
-
Migración de las reglas mod_rewrite de Apache a la sintaxis predeterminada
-
-
-
-
Traducir la dirección IP de destino de una solicitud a la dirección IP de origen
-
-
Compatibilidad con la configuración de Citrix ADC en un clúster
-
-
Administración del clúster de Citrix ADC
-
Grupos de nodos para configuraciones manchadas y parcialmente rayadas
-
Desactivación de la dirección en el plano anterior del clúster
-
Quitar un nodo de un clúster implementado mediante la agregación de vínculos de clúster
-
Supervisión de la configuración del clúster mediante SNMP MIB con enlace SNMP
-
Supervisión de errores de propagación de comandos en una implementación de clúster
-
Compatibilidad con logotipos listos para IPv6 para clústeres
-
Enlace de interfaz VRRP en un clúster activo de un solo nodo
-
Casos de configuración y uso del clúster
-
Migración de una configuración de alta disponibilidad a una configuración de clúster
-
Interfaces comunes para cliente y servidor e interfaces dedicadas para plano anterior
-
Conmutador común para cliente y servidor y conmutador dedicado para plano anterior
-
Servicios de supervisión en un clúster mediante supervisión de rutas
-
Copia de seguridad y restauración de la configuración del clúster
-
-
-
Caso de uso 1: Configurar DataStream para una arquitectura de base de datos primaria/secundaria
-
Caso de uso 2: Configurar el método de token de equilibrio de carga para DataStream
-
Caso de uso 3: Registrar transacciones MSSQL en modo transparente
-
Caso de uso 4: Equilibrio de carga específico de base de datos
-
-
Configurar Citrix ADC como un solucionador de stub-aware no validador de seguridad
-
Soporte de tramas jumbo para DNS para manejar respuestas de tamaños grandes
-
Configurar el almacenamiento en caché negativo de registros DNS
-
Equilibrio de carga global del servidor
-
Configurar entidades GSLB individualmente
-
Caso de uso: Implementación de un grupo de servicios de escalado automático basado en direcciones IP
-
-
Estado de servicio y servidor virtual de equilibrio de carga
-
Insertar atributos de cookie a las cookies generadas por ADC
-
Proteger una configuración de equilibrio de carga contra fallos
-
Administrar el tráfico del cliente
-
Configurar servidores virtuales de equilibrio de carga sin sesión
-
Reescritura de puertos y protocolos para la redirección HTTP
-
Insertar la dirección IP y el puerto de un servidor virtual en el encabezado de solicitud
-
Usar una IP de origen especificada para la comunicación de back-end
-
Establecer un valor de tiempo de espera para las conexiones de cliente inactivas
-
Administrar el tráfico del cliente sobre la base de la tasa de tráfico
-
Usar un puerto de origen de un intervalo de puertos especificado para la comunicación de back-end
-
Configurar la persistencia de IP de origen para la comunicación de back-end
-
-
Configuración avanzada de equilibrio de carga
-
Incremente gradualmente la carga en un nuevo servicio con inicio lento a nivel de servidor virtual
-
Proteja las aplicaciones en servidores protegidos contra sobretensiones de tráfico
-
Habilitar la limpieza de las conexiones de servidor virtual y servicio
-
Habilitar o inhabilitar la sesión de persistencia en los servicios TROFS
-
Habilitar la comprobación externa del estado de TCP para servidores virtuales UDP
-
Mantener la conexión de cliente para varias solicitudes de cliente
-
Inserte la dirección IP del cliente en el encabezado de solicitud
-
Usar la dirección IP de origen del cliente al conectarse al servidor
-
Configurar el puerto de origen para las conexiones del lado del servidor
-
Establecer un límite en el número de solicitudes por conexión al servidor
-
Establecer un valor de umbral para los monitores enlazados a un servicio
-
Establecer un valor de tiempo de espera para las conexiones de cliente inactivas
-
Establecer un valor de tiempo de espera para las conexiones de servidor inactivas
-
Establecer un límite en el uso del ancho de banda por parte de los clientes
-
Conservar el identificador de VLAN para la transparencia de VLAN
-
-
Configurar monitores en una configuración de equilibrio de carga
-
Configurar el equilibrio de carga para los protocolos de uso común
-
Caso de uso 3: Configurar el equilibrio de carga en el modo de retorno directo del servidor
-
Caso de uso 6: Configurar el equilibrio de carga en modo DSR para redes IPv6 mediante el campo TOS
-
Caso de uso 7: Configurar el equilibrio de carga en modo DSR mediante IP sobre IP
-
Caso de uso 8: Configurar el equilibrio de carga en modo de un brazo
-
Caso de uso 9: Configurar el equilibrio de carga en el modo en línea
-
Caso de uso 10: Equilibrio de carga de servidores del sistema de detección de intrusiones
-
Caso de uso 11: Aislamiento del tráfico de red mediante directivas de escucha
-
Caso de uso 12: Configurar XenDesktop para el equilibrio de carga
-
Caso de uso 13: Configurar XenApp para el equilibrio de carga
-
Caso de uso 14: Asistente para ShareFile para equilibrio de carga Citrix ShareFile
-
-
-
Compatibilidad con el protocolo TLSv1.3 tal como se define en RFC 8446
-
Tabla compatibilidad con certificados de servidor en el dispositivo ADC
-
Compatibilidad con plataformas basadas en chips Intel Coleto SSL
-
Soporte para el módulo de seguridad de hardware de red Gemalto SafeNet
-
-
-
-
-
Configuración de un túnel de conector de CloudBridge entre dos centros de datos
-
Configuración de CloudBridge Connector entre Datacenter y AWS Cloud
-
Configuración de un túnel de conector de CloudBridge entre un centro de datos y Azure Cloud
-
Configuración de CloudBridge Connector Tunnel entre Datacenter y SoftLayer Enterprise Cloud
-
Diagnóstico y solución de problemas del túnel del conector de CloudBridge
-
-
Puntos a tener en cuenta para una configuración de alta disponibilidad
-
Sincronizar archivos de configuración en una configuración de alta disponibilidad
-
Restricción del tráfico de sincronización de alta disponibilidad a una VLAN
-
Configuración de nodos de alta disponibilidad en diferentes subredes
-
Limitación de fallas causadas por monitores de ruta en modo no INC
-
Configuración del conjunto de interfaces de conmutación por error
-
Descripción del cálculo de comprobación de estado de alta disponibilidad
-
Administración de mensajes de latido de alta disponibilidad en un dispositivo Citrix ADC
-
Quitar y reemplazar un dispositivo Citrix ADC en una instalación de alta disponibilidad
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已动态机器翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
This content has been machine translated dynamically.
This content has been machine translated dynamically.
This content has been machine translated dynamically.
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.
Este artigo foi traduzido automaticamente.
这篇文章已经过机器翻译.放弃
Translation failed!
Extensiones de directivas: Casos de uso
Algunas aplicaciones de cliente tienen requisitos que no se pueden abordar con directivas y expresiones existentes. La función de extensión de directivas permite a los clientes agregar funciones personalizadas a sus aplicaciones para satisfacer sus requisitos.
Los siguientes casos de uso ilustran la adición de nuevas funciones mediante la función de extensión de directivas en el dispositivo Citrix ADC.
- Caso 1: Hash personalizado
- Caso 2: Contraer barras diagonales dobles en las URL
- Caso 3: Combinar encabezados
Caso 1: Hash personalizado
La función CUSTOM_HASH proporciona un mecanismo para insertar cualquier tipo de valor hash en las respuestas enviadas al cliente. En este caso de uso, la función hash se utiliza para calcular el hash de la cadena de consulta para una solicitud HTTP de reescritura e insertar un encabezado HTTP llamado CUSTOM_HASH con el valor calculado. La función CUSTOM_HASH implementa el algoritmo hash DJB2.
Ejemplo de uso de CUSTOM_HASH:
> add rewrite action test_custom_hash insert_http_header "CUSTOM_HASH" "HTTP.REQ.URL.QUERY.CUSTOM_HASH"
Ejemplo de definición de CUSTOM_HASH ():
-- Extension function to compute custom hash on the text
-- Uses the djb2 string hash algorithm
function NSTEXT:CUSTOM_HASH() : NSTEXT
local hash = 5381
local len = string.len(self)
for i = 1, len do
hash = bit32.bxor((hash * 33), string.byte(self, i))
end
return tostring(hash)
end
Descripción línea por línea de la muestra anterior:
function NSTEXT:CUSTOM_HASH() : NSTEXT
Defines the CUSTOM_HASH() function, with text input and a text return value.
local hash = 5381
local len = string.len(self)
Declares two local variables:
- hash. Accumulates the compute hash value and is seeded with the number 5381
- len. Sets to the length of the self input text string, using the built-in string.len() function.
for i = 1, len do
hash = bit32.bxor((hash * 33), string.byte(self, i))
end
Iterates through each byte of the input string and adds the byte to the hash. It uses the built-in string.byte() function to get the byte and the built-in bit32.bxor() function to compute the XOR of the existing hash value (multiplied by 33) and the byte.
return tostring(hash)
Calls the built-in tostring() function to convert the numeric hash value to a string and returns the string as the value of the function.
Caso 2: Contraer barras diagonales dobles en las URL
La contracción de barras dobles en las URL mejora el tiempo de representación del sitio web, ya que los exploradores analizan las URL de barra única de forma más eficiente. Las direcciones URL de barra única también para mantener la compatibilidad con aplicaciones que no aceptan barras dobles. La función de extensión de directivas permite a los clientes agregar una función que reemplaza las barras diagonales dobles por barras diagonales simples en las direcciones URL. El ejemplo siguiente ilustra la adición de una función de extensión de directiva que contrae barras dobles en las direcciones URL.
Ejemplo de definición de PULSE_DOUBLE_SLASES ():
-- Collapse double slashes in URL to a single slash and return the result
function NSTEXT:COLLAPSE_DOUBLE_SLASHES() : NSTEXT
local result = string.gsub(self, "//", "/")
return result
end
Descripción línea por línea de la muestra anterior:
function NSTEXT:COLLAPSE_DOUBLE_SLASHES() : NSTEXT
Declares the COLLAPSE_DOUBLE_SLASHES() function with text input and return.
local result = string.gsub(self, "//", "/")
Declares a local variable named result and uses the built-in string.gsub() function to replace all double slashes with single slashes in the self input text.
The second parameter of string.gsub() is actually a regular expression pattern, although here a simple string is used for the pattern.
return result
Returns the resulting string.
Caso 3: Combinar encabezados
Ciertas aplicaciones de cliente no pueden manejar múltiples encabezados en una solicitud. Además, el análisis de encabezados duplicados con los mismos valores de encabezado, o múltiples encabezados con el mismo nombre pero valores diferentes en una solicitud, consume tiempo y recursos de red. La función de extensión de directiva permite a los clientes agregar una función para combinar estos encabezados en encabezados individuales con un valor que combina los valores originales. Por ejemplo, combinando los valores de los encabezados H1 y H2.
Solicitud original:
GET /combine_headers HTTP/1.1
User-Agent: amigo unit test
Host: myhost
H2: h2val1
H1: abcd
Accept: \*/\*
H2: h2val2
Content-Length: 0
H2: h2val3
H1: 1234
Solicitud modificada:
GET /combine_headers HTTP/1.1
User-Agent: amigo unit test
Host: myhost
H2: h2val1, h2val2, h2val3
H1: abcd, 1234
Accept: \*/\*
Content-Length: 0
En general, este tipo de modificación de solicitud se realiza mediante la función Rewrite, mediante expresiones de directiva para delinear la parte de la solicitud que se va a modificar (el destino) y la modificación que se va a realizar (la expresión del generador de cadenas). Sin embargo, las expresiones de directiva no tienen la capacidad de iterar sobre un número arbitrario de encabezados.
La solución a este problema requiere una extensión al servicio de directivas. Para ello, vamos a definir una función de extensión, llamada COMBINE_HEADERS. Con esta función, podemos configurar la siguiente acción de reescritura:
> add rewrite action combine_headers_act replace 'HTTP.REQ.FULL_HEADER.AFTER_STR("HTTP/1.1rn")' 'HTTP.REQ.FULL_HEADER.AFTER_STR("HTTP/1.1rn").COMBINE_HEADERS'
Aquí, el destino de reescritura es HTTP.REQ.FULL_HEADER.AFTER_STR (“HTTP/1.1RN”). El AFTER_STR (“HTTP/1.1RN”) es necesario porque FULL_HEADER incluye la primera línea de la solicitud HTTP (por ejemplo, GET /combine_headers HTTP/1.1).
La expresión del generador de cadenas es HTTP.REQ.FULL_HEADER.AFTER_STR (“HTTP/1.1RN”) .COMBINE_HEADERS, donde los encabezados (menos la primera línea) se introducen en la función de extensión COMBINE_HEADERS, que combina y devuelve los valores de los encabezados.
Ejemplo de definición de COMBINE_HEADERS ():
-- Extension function to combine multiple headers of the same name into one header.
function NSTEXT:COMBINE_HEADERS(): NSTEXT
local headers = {} -- headers
local combined_headers = {} -- headers with final combined values
-- Iterate over each header (format "name:valuer\r\n")
-- and build a list of values for each unique header name.
for name, value in string.gmatch(self, "([^:]+):([^\r\n]*)\r\n") do
if headers[name] then
local next_value_index = #(headers[name]) + 1
headers[name][next_value_index] = value
else
headers[name] = {name .. ":" .. value}
end
end
-- iterate over the headers and concat the values with separator ","
for name, values in pairs(headers) do
local next_header_index = #combined_headers + 1
combined_headers[next_header_index] = table.concat(values, ",")
end
-- Construct the result headers using table.concat()
local result_str = table.concat(combined_headers, "\r\n") .. "\r\n\r\n"
return result_str
end
Descripción línea por línea de la muestra anterior:
function NSTEXT:COMBINE_HEADERS(): NSTEXT
Defines the COMBINE_HEADERS extension function, with the text input into the function from the policy expression and a text return type to the policy expression.
local headers = {} -- headers
local combined_headers = {} -- headers with final combined values
Declares local variables headers and combined_headers and initialize these variables to empty tables. headers will be a table of arrays of strings, where each array holds one or more values for a header. combined_headers will be an array of strings, where each array element is a header with its combined values.
for name, value in string.gmatch(self, "([^:]+):([^\r\n]*)\r\n") do
. . .
end
Este genérico para bucle analiza cada encabezado en la entrada. El iterador es la función incorporada string.gmatch (). Esta función toma dos parámetros: Una cadena para buscar, y un patrón para usar para hacer coincidir las piezas de la cadena. La cadena a buscar es suministrada por el parámetro self implícito, que es el texto de los encabezados introducidos en la función.
El patrón se expresa mediante una expresión regular (expresión regular para abreviar). Esta expresión regular coincide con el nombre de encabezado y el valor de cada encabezado, que el estándar HTTP define como name:valuern. Los paréntesis de la expresión regular especifican las partes coincidentes que se van a extraer, por lo que el esquema de expresiones regulares es (nombre de coincidencia): (valor de coincidencia) rn. El patrón de nombre de coincidencia debe coincidir con todos los caracteres excepto los dos puntos. Esto se escribe [^:]+([^:] es cualquier carácter excepto: Y + es una o más repeticiones). Del mismo modo, el patrón de valor de coincidencia tiene que coincidir con cualquier carácter excepto el \r\n, por lo que se escribe [^rn]*([^rn] coincide con cualquier carácter excepto \r y \n y * es cero o más repeticiones). Esto hace que la expresión regular completa ([^:]+): ([^rn]*) \r\n.
La sentencia for utiliza una asignación múltiple para establecer el nombre y el valor de las dos coincidencias devueltas por el iterador string.gmatch (). Estas se declaran implícitamente como variables locales dentro del cuerpo del bucle for.
if headers[name] then
local next_value_index = #(headers[name]) + 1
headers[name][next_value_index] = value
else
headers[name] = {name .. ":" .. value}
end
Estas instrucciones dentro del bucle for ponen los nombres y valores de encabezado en la tabla de encabezados. La primera vez que se analiza un nombre de encabezado (digamos H2: H2val1 en la entrada de ejemplo), no hay entrada de encabezados para el nombre y encabezados [nombre] es nulo.
Dado que nil se trata como falso, se ejecuta la cláusula else. Esto establece la entrada de encabezados para el nombre en una matriz con un valor de cadena name:value.
Nota: El constructor de matriz en el bucle else es equivalente a {[1] = name.. “:”.. value}, que establece el primer elemento de la matriz.) Para el primer encabezado H2, establece encabezados[“H2”]= {“h2:h2val1”}.
En instancias posteriores de un encabezado, (por ejemplo, H2: H2val2 en la entrada de ejemplo). headers[nombre] no es nulo, por lo que se ejecuta la cláusula then. Esto determina el siguiente índice disponible en el valor de matriz para headers[nombre] y coloca el valor de encabezado en ese índice. Para el segundo encabezado H2, establece headers[“H2”] = {“h2:h2val1”, “h2val2”}.
for name, values in pairs(headers) do
local next_header_index = #combined_headers + 1
combined_headers[next_header_index] = table.concat(values, ",")
end
Después de analizar los encabezados originales y rellenar la tabla de encabezados, este bucle crea la matriz combined_headers. Utiliza la función pares () como iterador de bucle for.
Cada llamada a pares () devuelve el nombre y el valor de la siguiente entrada en la tabla de encabezados.
La siguiente línea determina el siguiente índice disponible en la matriz combined_headers, y la siguiente línea establece ese elemento de matriz en el encabezado combinado. Utiliza la función table.concat () incorporada, que toma como argumentos una matriz de cadenas y una cadena para usar como separador, y devuelve una cadena que es la concatenación de las cadenas de matriz, separadas por el separador.
Por ejemplo, para los valores = {“h2:h2val1”, “h2val2”}, esto produce “h2:h2val1, h2val2”
local result_str = table.concat(combined_headers, "\r\n") .. "\r\n\r\n"
Después de construir la matriz combined_headers, concatena los elementos en una cadena, y agrega un rn doble que termina los encabezados HTTP.
return result_str
Devuelve una cadena como resultado de la función de extensión COMBINE_HEADERS.
Compartir
Compartir
This Preview product documentation is Citrix Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Citrix Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Citrix product purchase decisions.
If you do not agree, select Do Not Agree to exit.