Udostępnij przez


Zmienne serwera zestawu reguł usługi Azure Front Door

Dotyczy: ✔️ Front Door Standard ✔️ Front Door Premium

Zmienne serwera zestawu reguł zapewniają dostęp do informacji strukturalnych dotyczących żądania podczas pracy z zestawami reguł.

W przypadku używania warunków dopasowania zestawu reguł zmienne serwera są dostępne jako warunki dopasowania, dzięki czemu można identyfikować żądania z określonymi właściwościami.

W przypadku używania akcji zestawu reguł można użyć zmiennych serwera do dynamicznej zmiany nagłówków żądania i odpowiedzi oraz ponownego zapisywania adresów URL, ścieżek i ciągów zapytania, na przykład podczas ładowania nowej strony lub po wysłaniu formularza.

Uwaga

Zmienne serwera są dostępne tylko w warstwach Azure Front Door Standard i Premium.

Obsługiwane zmienne

Nazwa zmiennej opis
socket_ip Adres IP bezpośredniego połączenia z usługą Azure Front Door Edge. Jeśli klient użył serwera proxy HTTP lub modułu równoważenia obciążenia do wysłania żądania, wartość socket_ip to adres IP serwera proxy lub modułu równoważenia obciążenia.
Aby uzyskać dostęp do zmiennej serwera w warunku dopasowania, użyj adresu gniazda.
client_ip Adres IP klienta, który złożył oryginalne żądanie. Gdy w żądaniu znajduje się nagłówek X-Forwarded-For, adres IP klienta zostaje wybrany z tego nagłówka.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj adresu zdalnego i skonfiguruj Operator do Dopasowania IP lub Braku Dopasowania IP.
client_port Port IP klienta, który złożył żądanie.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj portu klienta.
hostname Nazwa hosta w żądaniu od klienta.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj nazwy hosta.
geo_country Wskazuje kraj/region wnioskodawcy przez kod kraju/regionu.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj Remote address i skonfiguruj Operator do Geo Match lub Geo Not Match.
http_method Metoda używana do tworzenia żądania adresu URL, takiego jak GET lub POST.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj metody Request.
http_version Protokół żądania. Zazwyczaj HTTP/1.0, HTTP/1.1lub HTTP/2.0.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj wersji PROTOKOŁU HTTP.
query_string Lista par zmiennych/wartości, które następują po ? w żądanym adresie URL.
Na przykład w żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikam, wartość query_string to id=123&title=fabrikam.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj ciągu zapytania.
request_scheme Schemat żądania: http lub https.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj protokołu Request.
request_uri Pełny oryginalny identyfikator URI żądania (z argumentami).
Na przykład w żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikam, wartość request_uri to http://contoso.com:8080/article.aspx?id=123&title=fabrikam.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj adresu URL żądania.
ssl_protocol Protokół ustanowionego połączenia TLS.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj protokołu SSL.
server_port Port serwera, który zaakceptował żądanie.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj Server port.
url_path Identyfikuje określony zasób na hoście, do którego klient internetowy chce uzyskać dostęp. Jest to część identyfikatora URI żądania bez argumentów lub ukośnika na początku.
Na przykład w żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikam, wartość url_path to article.aspx.
Usługa Azure Front Door obsługuje dynamiczne przechwytywanie ścieżki adresu URL przy użyciu zmiennej serwera {url_path:seg#} oraz konwertuje ścieżkę adresu URL na małe lub wielkie litery przy użyciu zmiennych serwera {url_path.tolower} lub {url_path.toupper}. Aby uzyskać więcej informacji, zobacz Format zmiennej serwera i Zmienne serwera.
Aby uzyskać dostęp do tej zmiennej serwera w warunku dopasowania, użyj warunku ścieżki żądania.
http_req_header_<headername> Przechwytuje wartość nagłówka żądania. Na przykład dla nagłówka żądania Device: Desktop, zmienna jest http_req_header_Device, wartość tej zmiennej to Desktop.
"Nazwa nagłówka w składni zmiennej obsługuje znaki alfanumeryczne oraz myślnik (a-z, A-Z, 0-9 i „-”)."
http_req_arg_<querystringkeyname> Przechwytuje wartość z pary klucz ciągu zapytania. Na przykład w żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikamzmienna jest http_req_header_id, wartość tej zmiennej to 123.
Klucz ciągu zapytania w składni zmiennej obsługuje znaki alfanumeryczne oraz łącznik (a-z, A-Z, 0-9 i "-").
http_resp_header_<headername> Przechwytuje wartość nagłówka odpowiedzi ze źródła. Na przykład dla nagłówka odpowiedzi Access-Control-Allow-Origin https://learn.microsoft.com, zmienna 'http_req_header_Access-Control-Allow-Origin' ma wartość https://learn.microsoft.com.
"Nazwa nagłówka w składni zmiennej obsługuje znaki alfanumeryczne oraz myślnik (a-z, A-Z, 0-9 i „-”)."

Format zmiennej serwera

Podczas pracy z akcjami zestawu reguł określ zmienne serwera przy użyciu następujących formatów:

  • {variable}: uwzględnij całą zmienną serwera. Jeśli na przykład adres IP klienta to 111.222.333.444, to token {client_ip} byłby obliczany na 111.222.333.444 wartość.
  • {variable:offset}: uwzględnij zmienną serwera po określonym przesunięciu aż do końca zmiennej. Przesunięcie jest oparte od zera. Jeśli na przykład adres IP klienta to 111.222.333.444, to token {client_ip:3} byłby obliczany na .222.333.444 wartość.
  • {variable:offset:length}: Uwzględnij zmienną serwera od określonego przesunięcia do określonej długości. Przesunięcie jest oparte od zera. Na przykład, gdy zmienna var ma wartość "AppId=01f592979c584d0f9d679db3e6a3e5e",
    • Przesunięcia w zakresie, brak długości: {var:0} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:6} = 01f592979c584d0f9d679db3e66a3e5e, {var:-8} = e66a3e5e
    • Przesunięcia poza zakresem, brak długości: {var:-128} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:128} = null
    • Przesunięcia i długości w zakresie: {var:0:5} = AppId, , {var:7:7} = 1f59297{var:7:-7} = 1f592979c584d0f9d679db3e
    • Długość zerowa: {var:0:0} = null, {var:4:0} = null
    • Przesunięcia w zakresie i długości poza zakresem: {var:0:100} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:5:100} = =01f592979c584d0f9d679db3e66a3e5e, {var:0:-48} = null, {var:4:-48} = null
    • Aby eksperymentować z tym, jak działa {variable:offset:length}, otwórz terminal bash systemu Linux lub użyj terminalu bash w usłudze Azure Cloud Shell. Wprowadź poniższy przykład w terminalu i sprawdź dane wyjściowe, aby zrozumieć, jak działa wyodrębnianie podciągów.
variable=helloworld123; echo ${variable:5} #Output = world123
variable=helloworld123; echo ${variable:0:5}  #Output = hello

Uwaga

W powłoce Bash wymagana jest spacja przed liczbą ujemną w rozwinięciu parametru, aby uniknąć błędów składni.

variable=helloworld123; echo ${variable: -3:3} #Output=123 
variable=helloworld123; echo ${variable:5: -3} #Output = world
  • {url_path:seg#}: Zezwalaj użytkownikom na przechwytywanie i używanie żądanego segmentu ścieżki adresu URL w obszarze Przekierowanie adresu URL, Ponowne zapisywanie adresów URL lub dowolną znaczącą akcję. Użytkownik może również przechwytywać wiele segmentów przy użyciu tego samego stylu co przechwytywanie podciągów {url_path:seg1:3}. Na przykład w przypadku wzorca źródłowego /id/12345/default i adresu URL miejsca docelowego, gdzie następuje ponowne zapisanie /{url_path:seg1}/home, oczekiwana ścieżka adresu URL po ponownym zapisaniu to /12345/home. W przypadku przechwytywania wielu segmentów, gdy wzorzec źródłowy to /id/12345/default/location/test, po przepisaniu adresu URL miejsce docelowe /{url_path:seg1:3}/home staje się /12345/default/location/home. Przechwytywanie segmentu obejmuje ścieżkę lokalizacji, więc jeśli trasa to /match/*, segment 0 będzie zgodny.

    Przesunięcie odpowiada indeksowi segmentu początkowego, a długość odnosi się do liczby segmentów do pobrania, w tym również segmentu na indeksie równym przesunięciu.

    Przy założeniu, że przesunięcie i długość są dodatnie, stosowana jest następująca logika:

    • Jeśli długość nie jest uwzględniona, uchwyć segment na indeksie równym przesunięciu.
    • Po uwzględnieniu długości, zapisuje segmenty od indeksu = przesunięcie do indeksu = przesunięcie + długość.

    Obsługiwane są również następujące specjalne przypadki:

    • Jeśli przesunięcie jest ujemne, policz wstecz od końca ścieżki, aby uzyskać segment początkowy.
    • Jeśli przesunięcie jest wartością ujemną większą lub równą liczbie segmentów, ustaw na 0.
    • Jeśli przesunięcie jest większe niż liczba segmentów, wynik jest pusty.
    • Jeśli długość wynosi 0, zwracanie pojedynczego segmentu określonego przez przesunięcie
    • Jeśli długość jest ujemna, należy traktować ją jako drugie przesunięcie i obliczać wstecz od końca ścieżki. Jeśli wartość jest mniejsza niż przesunięcie, powoduje to pusty ciąg.
    • Jeśli długość jest większa niż liczba segmentów, zwróć jako wynik to, co pozostaje w ścieżce.
  • {url_path.tolower} / {url_path.toupper}: przekonwertuj ścieżkę adresu URL na małe lub wielkie litery. Na przykład miejsce docelowe {url_path.tolower} w przekształceniu/przekierowaniu adresu URL /lowercase/ABcDXyZ/EXAMPLE skutkuje /lowercase/abcdxyz/example. Miejsce docelowe {url_path.toupper} w przepisywaniu/przekierowaniu adresów URL dla /ABcDXyZ/example skutkuje /ABCDXYZ/EXAMPLE.

Obsługiwane akcje zestawu reguł

Zmienne serwera są obsługiwane w następujących działaniach zestawu reguł:

Następne kroki