Auf virtuellen Servern der Schicht 7 können Sie optional Load Balancer-Regeln konfigurieren und das Load Balancing-Verhalten unter Verwendung von Übereinstimmungs- oder Aktionsregeln anpassen.
Load Balancer-Regeln unterstützen die Verwendung von regulären Ausdrücken (Regex) für Übereinstimmungstypen. Regex-Muster nach PCRE-Art werden mit einigen Einschränkungen für anspruchsvollere Anwendungsfälle unterstützt. Wenn Regex in Übereinstimmungsbedingungen verwendet wird, werden benannte erfassende Gruppierungskonstrukte unterstützt.
Bezüglich der Verwendung von Regex gelten folgende Einschränkungen:- Vereinigungen und Schnittmengen von Zeichenklassen werden nicht unterstützt. Verwenden Sie beispielsweise nicht [a-z[0-9]] und [a-z&&[aeiou]], sondern stattdessen [a-z0-9] bzw. [aeiou].
- Es werden nur 9 Rückverweise unterstützt, und man kann sie mit Hilfe von \1 bis \9 referenzieren.
- Verwenden Sie zum Abgleichen von Oktalzeichen das \0dd-Format, nicht das \ddd-Format.
- Eingebettete Flags werden auf der obersten Ebene nicht unterstützt. Sie können nur innerhalb von Gruppen verwendet werden. Verwenden Sie beispielsweise nicht „Case (?i:s)ensitive“, sondern stattdessen „Case ((?i:s)ensitive)“.
- Die Vorverarbeitungsoperationen \l, \u, \L und \U werden nicht unterstützt. Dabei steht \l für Kleinschreibung des nächsten Zeichens, \u für Großschreibung des nächsten Zeichens, \L für Kleinschreibung bis \E und \U für Großschreibung bis \E.
- „(?(condition)X)“, „(?{Code})“, „(??{Code})“ und „(?#comment)“ werden nicht unterstützt.
- Die vordefinierte Unicode-Zeichenklasse \X wird nicht unterstützt
- Die Verwendung von benannten Zeichenkonstrukten für Unicode-Zeichen wird nicht unterstützt. Verwenden Sie beispielsweise nicht „\N{name}“, sondern stattdessen „\u2018“.
Wenn Regex in Übereinstimmungsbedingungen verwendet wird, werden benannte erfassende Gruppierungskonstrukte unterstützt. Beispielsweise kann das Regex-Übereinstimmungsmuster „/news/(?<year>\d+)-(?<month>\d+)-(?<day>\d+)/(?<article>.*)“ für den Abgleich mit einem URI wie „/news/2018-06-15/news1234.html“ verwendet werden.
Dann werden die Variablen wie folgt belegt: $year = "2018", $month = "06", $day = "15" und $article = "news1234.html". Nachdem Sie die Variablen festgelegt haben, können diese in Regeln eines Load Balancers verwendet werden. Der URI kann z. B. mithilfe der übereinstimmenden Variablen wie „/news.py?year=$year&month=$month&day=$day&article=$article“ umgeschrieben werden. Dann wird der URI in „/news.py?year=2018&month=06&day=15&article=news1234.html“ umgeschrieben.
Umschreibungsaktionen können eine Kombination von benannten Erfassungsgruppen und integrierten Variablen verwenden. Der URI kann beispielsweise als „/news.py?year=$year&month=$month&day=$day&article=$article&user_ip=$_remote_addr“ geschrieben werden. Der Beispiel-URI wird dann in „/news.py?year=2018&month=06&day=15&article=news1234.html&user_ip=1.1.1.1“ umgeschrieben.
- $_args – Argumente der Anforderung
- $_arg_<name> - argument <name> in der Anforderungszeile
- $_cookie_<name> – Wert des <name>-Cookies
- $ _upstream_cookie_ <name> – Cookie mit dem angegebenen Namen, der vom vorgeschalteten Server im Antwortheader-Feld „Set-Cookie“ gesendet wurde
- $_upstream_http_<name> – beliebiges Antwortheader-Feld; <name> ist der Feldname konvertiert in Kleinbuchstaben, wobei Bindestriche durch Unterstriche ersetzt wurden
- $_host – in der folgenden Rangfolge: der Hostname aus der Anforderungszeile oder der Hostname im Anforderungsheader-Feld „Host“ oder der mit einer Anforderung übereinstimmende Servername
- $_http_<name> – beliebiges Feld des Anforderungsheaders; <name> ist der Name des Felds, konvertiert in Kleinbuchstaben, in dem Bindestriche durch Unterstriche ersetzt wurden.
- $_https – „on“, wenn die Verbindung im SSL-Modus arbeitet, andernfalls „“
- $_is_args – „?“, wenn eine Anforderungszeile Argumente enthält, andernfalls „“
- $_query_string – identisch mit „$_args“
- $_remote_addr – Client-Adresse
- $_remote_port – Client-Port
- $_request_uri – vollständiger ursprünglicher Anforderungs-URI (mit Argumenten)
- $_scheme – Anforderungsschema, „http“ oder „https“
- $_server_addr – Adresse des Servers, der eine Anforderung akzeptiert hat
- $_server_name – Name des Servers, der eine Anforderung akzeptiert hat
- $_server_port – Port des-Servers, der eine Anforderung akzeptiert hat
- $_server_protocol – Anforderungsprotokoll, in der Regel „HTTP/1.0“ oder „HTTP/1.1“
- $_ssl_client_cert – gibt für eine eingerichtete SSL-Verbindung das Client-Zertifikat im PEM-Format zurück, wobei jeder Zeile außer der ersten ein Tabulatorzeichen vorangestellt ist
- $_ssl_server_name – gibt den über SNI angeforderten Servernamen zurück
- $_uri – URI-Pfad in der Anforderung
- $_ssl_ciphers: Gibt die Client-SSL-Verschlüsselungen zurück
- $_ssl_client_i_dn: Gibt die „Aussteller-DN“-Zeichenfolge des Clientzertifikats für eine eingerichtete SSL-Verbindung gemäß RFC 2253 zurück
- $_ssl_client_s_dn: Gibt die „Antragsteller-DN“-Zeichenfolge des Clientzertifikats für eine eingerichtete SSL-Verbindung gemäß RFC 2253 zurück
- $_ssl_protocol: Gibt das Protokoll einer eingerichteten SSL-Verbindung zurück
- $_ssl_session_reused: Gibt „r“ zurück, wenn eine SSL-Sitzung wiederverwendet wurde, oder andernfalls „.“
Voraussetzungen
Stellen Sie sicher, dass ein virtueller Server der Schicht 7 verfügbar ist. Siehe Konfigurieren von virtuellen Servern von Layer 7 im Manager-Modus.