Citrix ADC

Zusammenfassende Beispiele für erweiterte Richtlinienausdrücke und Richtlinien

Die folgende Tabelle enthält Beispiele für erweiterte Richtlinienausdrücke, die Sie als Grundlage für Ihre eigenen erweiterten Richtlinienausdrücke verwenden können.

Tabelle 1. Beispiele für erweiterte Richtlinienausdrücke

Ausdruckstyp Beispiel Ausdrücke
Sehen Sie sich die in der HTTP-Anforderung verwendete Methode an. http.req.method.eq(post) http.req.method.eq(get)
Überprüfen Sie den Cache-Control- oder Pragma-Header-Wert in einer HTTP-Anforderung (req) oder -Antwort (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")
Prüfen Sie, ob ein Header in einer Anfrage (req) oder Antwort (res) vorhanden ist. http.req.header("myHeader").exists http.res.header("myHeader").exists
Suchen Sie in einer HTTP-Anforderung basierend auf der Dateierweiterung nach einem bestimmten Dateityp. 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/")
Suchen Sie in einer HTTP-Anfrage nach etwas anderem als einem bestimmten Dateityp. http.req.url.contains(".gif").not; http.req.url.contains(".jpeg").not
Überprüfen Sie den Dateityp, der in einer HTTP-Antwort basierend auf dem Content-Type-Header gesendet wird. 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/")
Überprüfen Sie, ob diese Antwort einen Ablaufheader enthält. http.res.header("Expires").exists
Überprüfen Sie in einer Antwort auf einen Set-Cookie-Header. http.res.header("Set-Cookie").exists
Überprüfen Sie den Agenten, der die Antwort gesendet hat. http.res.header("User-Agent").contains("Mozilla/4.7") http.res.header("User-Agent").contains("MSIE")
Überprüfen Sie, ob die ersten 1024 Bytes des Body einer Anfrage mit der Zeichenfolge “some text” beginnen. http.req.body(1024).contains("some text")

Die folgende Tabelle zeigt Beispiele für Richtlinienkonfigurationen und Bindungen für häufig verwendete Funktionen.

Tabelle 2. Beispiele für erweiterte Richtlinienausdrücke und Richtlinien

Zweck Beispiel
Verwenden Sie die Rewrite-Funktion, um Vorkommen von http:// with https:// im Hauptteil einer HTTP-Antwort zu ersetzen. 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
Ersetzen Sie alle Vorkommen von “abcd” durch “1234” in den ersten 1000 Byte des HTTP-Hauptkörpers. 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
Downgrade der HTTP-Version auf 1.0, um zu verhindern, dass der Server HTTP-Antworten chunkiert. 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
Entfernen Sie in allen Antworten Verweise auf das HTTP- oder HTTPS-Protokoll. Wenn die Verbindung des Benutzers HTTP ist, wird der Link mithilfe von HTTP geöffnet, und wenn die Verbindung des Benutzers HTTPS ist, wird der Link mithilfe von HTTPS geöffnet. 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
Schreiben Sie Instanzen von http: in allen URLs um. 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
Ändern Sie eine URL, um von URL A nach URL B umzuleiten. In diesem Beispiel wird “file5.html” an den Pfad angehängt. 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
Leiten Sie eine externe URL auf eine interne URL um. 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
Leiten Sie Anfragen an www.example.com um, die eine Abfragezeichenfolge haben, an www.webn.example.com. Der Wert n wird von einem Serverparameter in der Abfragezeichenfolge abgeleitet, z. B. 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#
Beschränken Sie die Anzahl der Anfragen pro Sekunde von einer 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
Überprüfen Sie die IP-Adresse des Clients, geben Sie die Anforderung jedoch weiter, ohne die Anforderung zu ändern. 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
Entfernen Sie alte Header aus einer Anforderung und fügen Sie einen NS-Client-Header ein. 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
Entfernen Sie alte Header aus einer Anforderung, fügen Sie einen NS-Client-Header ein und ändern Sie dann die Aktion “Header einfügen”, sodass der Wert des eingefügten Headers die IP-Werte des Clients aus den alten Headern und die Verbindungs-IP-Adresse der Citrix ADC-Appliance enthält. Beachten Sie, dass in diesem Beispiel das vorherige Beispiel wiederholt wird, mit Ausnahme der Aktion zum Rewriterichtlinie des endgültigen Satzes. `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’
Zusammenfassende Beispiele für erweiterte Richtlinienausdrücke und Richtlinien