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
Copiado
Error