Citrix ADC

Ejemplos resumidos de directivas y expresiones de directivas avanzadas

En la tabla siguiente se proporcionan ejemplos de expresiones de directivas avanzadas que puede utilizar como base para sus propias expresiones de directiva avanzadas.

Tabla 1. Ejemplos de expresiones de directivas avanzadas

Tipo de expresión Expresiones de ejemplo
Observe el método utilizado en la solicitud HTTP. http.req.method.eq(post) http.req.method.eq(get)
Compruebe el valor del encabezado Cache-Control o Pragma en una solicitud HTTP (req) o respuesta (res). http.req.header("Cache-Control").contains("no-store") http.req.header("Cache-Control").contains("no-cache") http.req.header("Pragma").contains("no-cache") http.res.header("Cache-Control").contains("private") http.res.header("Cache-Control").contains("public") http.res.header("Cache-Control").contains("must-revalidate")http.res.header("Cache-Control").contains ("proxy-revalidate") http.res.header("Cache-Control").contains("max-age")
Compruebe la presencia de un encabezado en una solicitud (req) o respuesta (res). http.req.header("myHeader").exists http.res.header("myHeader").exists
Busque un tipo de archivo concreto en una solicitud HTTP basada en la extensión del archivo. http.req.url.contains(".html") http.req.url.contains(".cgi")http.req.url.contains(".asp") http.req.url.contains(".exe") http.req.url.contains(".cfm") http.req.url.contains(".ex") http.req.url.contains(".shtml") http.req.url.contains(".htx") http.req.url.contains("/cgi-bin/") http.req.url.contains("/exec/") http.req.url.contains("/bin/")
Busque cualquier cosa que no sea un tipo de archivo concreto en una solicitud HTTP. http.req.url.contains(".gif").not; http.req.url.contains(".jpeg").not
Compruebe el tipo de archivo que se envía en una respuesta HTTP según el encabezado Content-Type. http.res.header("Content-Type").contains("text") http.res.header("Content-Type").contains "application/msword") http.res.header("Content-Type").contains("vnd.ms-excel") http.res.header("Content-Type").contains("application/vnd.ms-powerpoint"); http.res.header("Content-Type").contains("text/css"); http.res.header("Content-Type").contains("text/xml"); http.res.header("Content-Type").contains("image/")
Compruebe si esta respuesta contiene un encabezado de caducidad. http.res.header("Expires").exists
Compruebe si hay un encabezado Set-Cookie en una respuesta. http.res.header("Set-Cookie").exists
Compruebe el agente que envió la respuesta. http.res.header("User-Agent").contains("Mozilla/4.7") http.res.header("User-Agent").contains("MSIE")
Compruebe si los primeros 1024 bytes del cuerpo de una solicitud comienzan con la cadena “algún texto”. http.req.body(1024).contains("some text")

En la tabla siguiente se muestran ejemplos de configuraciones de directivas y enlaces para funciones de uso común.

Cuadro 2. Ejemplos de directivas avanzadas, expresiones y directivas

Propósito Ejemplo
Utilice la función de reescritura para reemplazar las apariciones de http:// with https:// en el cuerpo de una respuesta HTTP. add rewrite action httpRewriteAction replace_all http.res.body(50000) "\"https://\"" -search http:// add rewrite policy demo_rep34312 "http.res.body(50000).contains(\"http://\")" httpRewriteAction
Reemplace todas las apariciones de “abcd” por “1234” en los primeros 1000 bytes del cuerpo HTTP. add rewrite action abcdTo1234Action replace_all "http.req.body(1000)" "\"1234\"" -search abcd add rewrite policy abcdTo1234Policy "http.req.body(1000).contains(\"abcd\")" abcdTo1234Action bind rewrite global abcdTo1234Policy 100 END -type REQ_OVERRIDE
Rebaja la versión HTTP a 1.0 para evitar que el servidor separe las respuestas HTTP. add rewrite action downgradeTo1.0Action replace http.req.version.minor "\"0\"" add rewrite policy downgradeTo1.0Policy "http.req.version.minor.eq(1)" downgradeTo1.0Action bind lb vserver myLBVserver -policyName downgradeTo1.0Policy -priority 100 -gotoPriorityExpression NEXT -type REQUEST
Elimine las referencias al protocolo HTTP o HTTPS en todas las respuestas, de modo que si la conexión del usuario es HTTP, el enlace se abra mediante HTTP y, si la conexión del usuario es HTTPS, el enlace se abra mediante HTTPS. add rewrite action remove_http_https replace_all "http.res.body(1000000).set_text_mode(ignorecase)" "\"//\"" -search "re~https?://|HTTPS?://~" add rewrite policy remove_http_https true remove_http_https bind lb vserver test_vsvr -policyName remove_http_https -priority 20 -gotoPriorityExpression NEXT -type RESPONSE
Reescribe instancias de http: a https: en todas las URL. add responder action httpToHttpsAction redirect "\"https://\" + http.req.hostname + http.req.url" add responder policy httpToHttpsPolicy "!CLIENT.SSL.IS_SSL" httpToHttpsAction bind responder global httpToHttpsPolicy 1 END -type OVERRIDE
Modifique una URL para redirigir de la URL A a la URL B. En este ejemplo, se anexa “file5.html” a la ruta de acceso. add responder action appendFile5Action redirect \"http://\" + http.req.hostname + http.req.url + \"/file5.html\"" add responder policy appendFile5Policy "http.req.url.eq(\"/testsite\")" appendFile5Action bind responder global appendFile5Policy 1 END -type OVERRIDE
Redirige una URL externa a una URL interna. add rewrite action act_external_to_internal REPLACE 'http.req.hostname.server' '"www.my.host.com"' add rewrite policy pol_external_to_internal 'http.req.hostname.server.eq("www.external.host.com")' act_external_to_internal bind rewrite global pol_external_to_internal 100 END -type REQ_OVERRIDE
Redirigir las solicitudes a www.example.com que tengan una cadena de consulta a www.webn.example.com. El valor n se deriva de un parámetro de servidor de la cadena de consulta, por ejemplo, server=5. add rewrite action act_redirect_query REPLACE q#http.req.header("Host").before_str(".example.com")' '"Web" + http.req.url.query.value("server")# add rewrite policy pol_redirect_query q#http.req.header("Host").eq("www.example.com") && http.req.url.contains("?")' act_redirect_query#
Limita el número de solicitudes por segundo de una URL. add ns limitSelector ip_limit_selector http.req.url "client.ip.src" add ns limitIdentifier ip_limit_identifier -threshold 4 -timeSlice 3600 -mode request_rate -limitType smooth -selectorName ip_limit_selector add responder action my_Web_site_redirect_action redirect "\"http://www.mycompany.com/\"" add responder policy ip_limit_responder_policy "http.req.url.contains(\"myasp.asp\") && sys.check_limit (\"ip_limit_identifier\")" my_Web_site_redirect_action bind responder global ip_limit_responder_policy 100 END -type default
Compruebe la dirección IP del cliente pero pase la solicitud sin modificar la solicitud. add rewrite policy check_client_ip_policy 'HTTP.REQ.HEADER ("x-forwarded-for").EXISTS HTTP.REQ.HEADER ("client-ip").EXISTS' NOREWRITE bind rewrite global check_client_ip_policy 100 END
Elimina los encabezados antiguos de una solicitud e inserta un encabezado NS-Client. add rewrite action del_x_forwarded_for delete_http_header x-forwarded-for add rewrite action del_client_ip delete_http_header client-ip add rewrite policy check_x_forwarded_for_policy 'HTTP.REQ.HEADER("x-forwarded-for").EXISTS' del_x_forwarded_for add rewrite policy check_client_ip_policy 'HTTP.REQ.HEADER("client-ip").EXISTS' del_client_ip add rewrite action insert_ns_client_header insert_http_header NS-Client 'CLIENT.IP.SRC' add rewrite policy insert_ns_client_policy 'HTTP.REQ.HEADER("x-forwarded-for").EXISTS HTTP.REQ.HEADER("client-ip").EXISTS' insert_ns_client_header bind rewrite global check_x_forwarded_for_policy 100 200 bind rewrite global check_client_ip_policy 200 300 bind rewrite global insert_ns_client_policy 300 END
Quite los encabezados antiguos de una solicitud, inserte un encabezado NS-Client y, a continuación, modifique la acción “insertar encabezado” para que el valor del encabezado insertado contenga los valores IP del cliente de los encabezados antiguos y la dirección IP de conexión del dispositivo Citrix ADC. Tenga en cuenta que este ejemplo repite el ejemplo anterior, con la excepción de la acción de reescritura final del conjunto. `add rewrite action del_x_forwarded_for delete_http_header x-forwarded-for add rewrite action del_client_ip delete_http_header client-ip add rewrite policy check_x_forwarded_for_policy ‘HTTP.REQ.HEADER(“x-forwarded-for”).EXISTS’ del_x_forwarded_for add rewrite policy check_client_ip_policy ‘HTTP.REQ.HEADER(“client-ip”).EXISTS’ del_client_ip add rewrite action insert_ns_client_header insert_http_header NS-Client ‘CLIENT.IP.SRC’ add rewrite policy insert_ns_client_policy ‘HTTP.REQ.HEADER(“x-forwarded-for”).EXISTS HTTP.REQ.HEADER(“client-ip”).EXISTS’ insert_ns_client_header bind rewrite global check_x_forwarded_for_policy 100 200 bind rewrite global check_client_ip_policy 200 300 bind rewrite global insert_ns_client_policy 300 END set rewrite action insert_ns_client_header -stringBuilderExpr ‘HTTP.REQ.HEADER(“x-forwarded-for”).VALUE(0) + “ “ + HTTP.REQ.HEADER(“client-ip”).VALUE(0) + “ “ + CLIENT.IP.SRC’
Ejemplos resumidos de directivas y expresiones de directivas avanzadas