ADC

Ejemplos de resumen de expresiones y directivas de sintaxis predeterminadas

La tabla siguiente proporciona ejemplos de expresiones de sintaxis predeterminadas que puede utilizar como base para sus propias expresiones de sintaxis predeterminadas.

Cuadro 1 Ejemplos de expresiones de sintaxis predeterminadas

Tipo de expresión Expresiones de ejemplo
Mire 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 de 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 particular en una solicitud HTTP. http.req.url.contains(".gif").not; http.req.url.contains(".jpeg").not
Compruebe el tipo de archivo que se está enviando en una respuesta HTTP basada en 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 y enlaces de directivas para funciones de uso común.

Tabla 2. Ejemplos de expresiones y directivas de sintaxis predeterminadas

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://\"" -pattern 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\"" -pattern 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 fragmente 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 vínculo se abra mediante HTTP, y si la conexión del usuario es HTTPS, el vínculo se abre mediante HTTPS. add rewrite action remove_http_https replace_all "http.res.body(1000000).set_text_mode(ignorecase)" "\"//\"" -pattern "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
Vuelva a escribir instancias de http: A https: En todas las URL. add responder action httpToHttpsAction redirect "\"https://\" + http.req.hostname + http.req.url" -bypassSafetyCheck YES 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, “file5.html” se agrega a la ruta. add responder action appendFile5Action redirect \"http://\" + http.req.hostname + http.req.url + \"/file5.html\"" -bypassSafetyCheck YES add responder policy appendFile5Policy "http.req.url.eq(\"/testsite\")" appendFile5Action bind responder global appendFile5Policy 1 END -type OVERRIDE
Redirigir 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 tienen una cadena de consulta a www.webn.example.com. El valor n se deriva de un parámetro de servidor en 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#
Limite el número de solicitudes por segundo desde 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
Elimine los encabezados antiguos de una solicitud e inserte 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
Elimine 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' -bypassSafetyCheck YES
Ejemplos de resumen de expresiones y directivas de sintaxis predeterminadas

En este artículo