ADC

Tutorialbeispiele für Standard-Syntaxrichtlinien für das Umschreiben

Mit der Funktion Umschreiben können Sie einen beliebigen Teil eines HTTP-Headers ändern, und für Antworten können Sie den HTTP-Hauptteil ändern. Sie können diese Funktion verwenden, um mehrere nützliche Aufgaben auszuführen, z. B. das Entfernen unnötiger HTTP-Header, das Maskieren interner URLs, das Umleiten von Webseiten und das Umleiten von Abfragen oder Schlüsselwörtern.

In den folgenden Beispielen erstellen Sie zunächst eine Umschreibaktion und eine Umschreibrichtlinie. Dann binden Sie die Richtlinie global.

Dieses Dokument enthält die folgenden Details:

  • Umleiten einer externen URL zu einer internen URL
  • Umleiten einer Abfrage
  • Umschreiben von HTTP in HTTPS
  • Entfernen unerwünschter Kopfzeilen
  • Reduzieren von Webserver-Weiterleitungen
  • Maskieren des Server-Headers
  • Konvertieren von Klartext in eine URL-codierte Zeichenfolge und auf entgegengesetzte Weise

Weitere Informationen zu den Befehlen und Syntaxbeschreibungen finden Sie auf der Seite “Befehlsreferenz umschreiben”.

Umleiten einer externen URL zu einer internen URL

In diesem Beispiel wird beschrieben, wie Sie eine Umschreibaktion erstellen und eine Richtlinie neu schreiben, die eine externe URL an eine interne URL umleitet. Sie erstellen eine Aktion namens act_external_to_internal, die das Umschreiben durchführt. Anschließend erstellen Sie eine Richtlinie namens pol_external_to_internal.

So leiten Sie eine externe URL über die Befehlszeilenschnittstelle an eine interne URL um

  • Um die Umschreibungsaktion zu erstellen, geben Sie an der Eingabeaufforderung Folgendes ein:

add rewrite action act_external_to_internal REPLACE “http.req.hostname.server” “\”host_name_of_internal_Web_server\””

  • Um die Richtlinie zum Umschreiben zu erstellen, geben Sie an der Citrix ADC Eingabeaufforderung Folgendes ein:

add rewrite policy pol_external_to_internal "http.req.hostname.server.eq(\"host_name_of_external_Web_server\")" act_external_to_internal

  • Binden Sie die Richtlinie global.

So leiten Sie eine externe URL mit dem Konfigurationsdienstprogramm an eine interne URL um

  1. Navigieren Sie zu AppExpert > Umschreiben > Aktionen.
  2. Klicken Sie im Detailbereich auf Hinzufügen.
  3. Geben Sie im Dialogfeld Rewrite Action erstellen den Namen act_external_to_internal ein.
  4. Um den Hostnamen des HTTP-Servers durch den internen Servernamen zu ersetzen, wählen Sie im Listenfeld Typ die Option Ersetzen aus.
  5. Geben Sie im Feld Header-Name Hostein.
  6. Geben Sie im Zeichenfolgenausdruck für ein Ersetzungstextfeld den internen Hostnamen Ihres Webservers ein.
  7. Klicken Sie auf Create und dann auf Close.
  8. Klicken Sie im Navigationsbereich auf Richtlinien.
  9. Klicken Sie im Detailbereich auf Hinzufügen.
  10. Geben Sie im Feld Name pol_external_to_internal ein. Diese Richtlinie erkennt Verbindungen zum Webserver.
  11. Wählen Sie im Dropdownmenü Aktion die Aktion act_external_to_internal aus.
  12. Erstellen Sie im Ausdruckseditor den folgenden Ausdruck:
HTTP.REQ.HOSTNAME.SERVER.EQ("www.example.com")
<!--NeedCopy-->
  1. Binden Sie Ihre neue Richtlinie global.

Umleiten einer Abfrage

In diesem Beispiel wird beschrieben, wie eine Umschreibungsaktion und eine Umschreibungsrichtlinie erstellt wird, die eine Abfrage an die richtige URL umleitet. Im Beispiel wird davon ausgegangen, dass die Anforderung einen Host-Header enthält, der auf www.example.com festgelegt ist, und eine GET-Methode mit der Zeichenfolge /query.cgi?server=5. Die Umleitung extrahiert den Domänennamen aus dem Host-Header und die Nummer aus der Abfragezeichenfolge und leitet die Abfrage des Benutzers an den Server Web5.example.comum, wo der Rest der Abfrage des Benutzers verarbeitet wird.

Hinweis:

Obwohl die folgenden Befehle in mehreren Zeilen angezeigt werden, müssen Sie sie in einer einzigen Zeile ohne Zeilenumbrüche eingeben.

So leiten Sie eine Abfrage mit der CLI an die entsprechende URL um

  • Um eine Rewrite-Aktion namens act_redirect_query zu erstellen, die den Hostnamen des HTTP-Servers durch den internen Servernamen ersetzt, geben Sie Folgendes ein:

add rewrite action act_redirect_query REPLACE http.req.header("Host").before_str(".example.com") '"Web" + http.req.url.query.value("server")'

  • Um eine Rewrite-Richtlinie mit dem Namen pol_redirect_query zu erstellen, geben Sie die folgenden Befehle an der Citrix ADC-Eingabeaufforderung ein. Diese Richtlinie erkennt Verbindungen zum Webserver, die eine Abfragezeichenfolge enthalten. Wenden Sie diese Richtlinie nicht auf Verbindungen an, die keine Abfragezeichenfolge enthalten:

add rewrite policy pol_redirect_query 'http.req.header("Host").eq(www.example.com) && http.req.url.contains("?")' act_redirect_query

  • Binden Sie Ihre neue Richtlinie global.

Da diese Rewrite-Richtlinie sehr spezifisch ist und vor anderen Umschreibungsrichtlinien ausgeführt werden muss, ist es ratsam, ihr eine hohe Priorität zuzuweisen. Wenn Sie ihm eine Priorität von 1 zuweisen, wird sie zuerst ausgewertet.

Umschreiben von HTTP in HTTPS

In diesem Beispiel wird beschrieben, wie Webserver-Antworten neu geschrieben werden, um alle URLs zu finden, die mit der Zeichenfolge “HTTP” beginnen, und diese Zeichenfolge durch “https” ersetzen. Sie können damit vermeiden, Webseiten aktualisieren zu müssen, nachdem Sie einen Server von HTTP auf HTTPS verschoben haben.

So leiten Sie HTTP-URLs mit der CLI an HTTPS um

  • Um eine Rewrite-Aktion namens act_replace_http_with_https zu erstellen, die alle Instanzen der Zeichenfolge “HTTP” durch die Zeichenfolge “https” ersetzt, geben Sie den folgenden Befehl ein:

add rewrite action act_replace_http_with_https replace_all 'http.res.body(100)' '"https"' -pattern http

  • Um eine Rewrite-Richtlinie mit dem Namen pol_replace_http_with_https zu erstellen, die Verbindungen zum Webserver erkennt, geben Sie den folgenden Befehl ein:

add rewrite policy pol_replace_http_with_https TRUE act_replace_http_with_https NOREWRITE

  • Binden Sie Ihre neue Richtlinie global.

Informationen zur Behebung dieses Umschreibungsvorgangs finden Sie unter “Fallstudie: Richtlinie zum Umschreiben von HTTP-Links in HTTPS funktioniert nicht. “

Entfernen unerwünschter Kopfzeilen

In diesem Beispiel wird erläutert, wie Sie eine Richtlinie zum Umschreiben verwenden, um unerwünschte Kopfzeilen zu entfernen. Insbesondere zeigt das Beispiel, wie die folgenden Header entfernt werden:

  • Akzeptieren Sie die Kodierungskopfzeile. Wenn Sie den Header Accept Encoding aus HTTP-Antworten entfernen, wird die Komprimierung der Antwort verhindert.
  • Kopfzeile des Inhaltsspeicherorts. Wenn Sie den Content Location-Header aus HTTP-Antworten entfernen, wird verhindert, dass Ihr Server einem Hacker Informationen zur Verfügung stellt, die eine Sicherheitsverletzung ermöglichen könnten.

Um Header aus HTTP-Antworten zu löschen, erstellen Sie eine Umschreibungsaktion und eine Umschreibungsrichtlinie und binden die Richtlinie global.

So erstellen Sie die entsprechende Rewrite-Aktion mit der CLI

Geben Sie an der Eingabeaufforderung einen der folgenden Befehle ein, um entweder den Header Accept Encoding zu entfernen und die Antwortkomprimierung zu verhindern, oder den Inhaltsspeicher-Header zu entfernen:

  • add rewrite action "act_remove-ae" delete_http_header "Accept-Encoding"
  • add rewrite action "act_remove-cl" delete_http_header "Content-Location"

So erstellen Sie die entsprechende Rewrite-Richtlinie mit der CLI

Geben Sie an der Eingabeaufforderung einen der folgenden Befehle ein, um entweder den Header Encoding akzeptieren oder den Header Content Location zu entfernen:

  • add rewrite policy "pol_remove-ae" true "act_remove-ae"
  • add rewrite policy "pol_remove-cl" true "act_remove-cl"

So binden Sie die Richtlinie global mit der CLI

Geben Sie an der Eingabeaufforderung einen der folgenden Befehle ein, um die erstellte Richtlinie global zu binden:

  • bind rewrite global pol_remove_ae 100
  • bind rewrite global pol_remove_cl 200

Reduzieren von Webserver-Weiterleitungen

In diesem Beispiel wird erläutert, wie Sie eine Richtlinie zum Umschreiben verwenden, um Verbindungen zu Ihrer Homepage und anderen URLs zu ändern, die mit einem Schrägstrich (/) auf die Standardindexseite für den Server enden, wodurch Umleitungen vermieden und die Belastung des Servers verringert wird.

So ändern Sie HTTP-Anfragen auf Verzeichnisebene so, dass sie die Standard-Homepage mit der CLI einschließen

  • Geben Sie Folgendes ein, um eine Aktion Umschreiben mit dem Namen action-default-homepage zu erstellen, die URLs, die mit einem Schrägstrich enden, so dass sie die Standardstartseite index.html enthält:

add rewrite action "action-default-homepage" replace http.req.url.path "\"/index.html\""

  • Um eine Richtlinie zum Umschreiben mit dem Namen policy-default-homepage zu erstellen, die Verbindungen zu Ihrer Homepage erkennt und die neue Aktion anwendet, geben Sie Folgendes ein:

add rewrite policy "policy-default-homepage" q\#http.req.url.path.EQ("/") "action-default-homepage"\#

  • Binden Sie Ihre neue Richtlinie global, um sie in Kraft zu setzen.

Maskieren des Server-Headers

In diesem Beispiel wird erläutert, wie Sie eine Richtlinie zum Umschreiben verwenden, um die Informationen im Server-Header in HTTP-Antworten vom Webserver zu maskieren. Dieser Header enthält Informationen, mit denen Hacker Ihre Website gefährden können. Während das Maskieren des Headers einen erfahrenen Hacker nicht daran hindert, Informationen über Ihren Server zu finden, erschwert dies das Hacken Ihres Webservers und ermutigt Hacker, weniger gut geschützte Ziele auszuwählen.

So maskieren Sie den Server-Header in Antworten von der CLI

  1. Um eine Rewrite -Aktion namens act_mask-server zu erstellen, die den Inhalt des Server-Headers durch eine nicht informative Zeichenfolge ersetzt, geben Sie Folgendes ein:

add rewrite action "act_mask-server" replace "http.RES.HEADER(\"Server\")" "\"Web Server 1.0\""

  1. Geben Sie Folgendes ein, um eine Rewrite-Richtlinie mit dem Namen pol_mask-server zu erstellen, die alle Verbindungen erkennt:

add rewrite policy "pol_mask-server" true "act_mask-server"

  1. Binden Sie Ihre neue Richtlinie global, um sie in Kraft zu setzen.

Wie konvertiert man Nur-Text in eine URL-codierte Zeichenfolge und auf entgegengesetzte Weise

Die folgenden Ausdrücke wandeln Nur-Text in eine URL-codierte Zeichenfolge und umgekehrt um:

  1. URL_RESERVED_CHARS_SAFE (string to URL ENCODED).

Beispiel:

("abc def&123").URL_RESERVED_CHARS_SAFE
Output will be
“abc%20def%26123” which is url encoded.
<!--NeedCopy-->
  1. SET_TEXT_MODE (URLENCODED) .DECODE_USING_TEXT_MODE. (URL ENCODED to string)

Beispiel:

("abc%20def%26123").SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE
Output will be
“abc def&123”
<!--NeedCopy-->
Tutorialbeispiele für Standard-Syntaxrichtlinien für das Umschreiben