Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Application Gateway umożliwia ponowne zapisywanie wybranej zawartości w żądaniach i odpowiedziach. Dzięki tej funkcji można tłumaczyć adresy URL, parametry ciągu zapytania oraz modyfikować nagłówki żądań i odpowiedzi. Można również dodać warunki, aby upewnić się, że adres URL lub określone nagłówki zostaną przepisane tylko wtedy, gdy zostaną spełnione określone warunki. Te warunki są oparte na informacjach dotyczących żądania i odpowiedzi.
Funkcje ponownego zapisywania nagłówka i adresu URL HTTP są dostępne tylko dla jednostki SKU usługi Application Gateway w wersji 2.
Nagłówki żądań i odpowiedzi
Usługa Application Gateway umożliwia dodawanie, usuwanie lub aktualizowanie nagłówków żądań HTTP i odpowiedzi, podczas gdy pakiety żądań i odpowiedzi są przenoszone między pulami klienta i zaplecza. Nagłówki HTTP umożliwiają klientowi i serwerowi przekazywanie dodatkowych informacji z żądaniem lub odpowiedzią. Zapisując ponownie te nagłówki, można wykonać ważne zadania, w tym:
- Dodawanie pól nagłówków związanych z zabezpieczeniami, takich jak HSTS i X-XSS-Protection
- Usuwanie pól nagłówka odpowiedzi, które mogą ujawniać poufne informacje
- Usuwanie informacji o porcie z nagłówków X-Forwarded-For
Możesz zmodyfikować wszystkie nagłówki w żądaniach i odpowiedziach, z wyjątkiem nagłówków Connection i Upgrade. Możesz również użyć bramy aplikacji, aby utworzyć nagłówki niestandardowe i dodać je do żądań i odpowiedzi kierowanych przez nią. Aby dowiedzieć się, jak przepisać nagłówki żądań i odpowiedzi za pomocą usługi Application Gateway przy użyciu witryny Azure Portal, zobacz tutaj.
Ścieżka adresu URL i ciąg zapytania
Dzięki możliwości ponownego zapisywania adresów URL w usłudze Application Gateway można wykonywać następujące czynności:
Przepisz nazwę hosta, ścieżkę i ciąg zapytania w adresie URL żądania.
Wybierz ponowne zapisywanie adresu URL wszystkich żądań na odbiorniku lub tylko tych żądań, które pasują do co najmniej jednego ustawionego warunków. Te warunki są oparte na właściwościach żądania (nagłówek żądania i zmienne serwera).
Wybierz kierowanie żądania (wybierz pulę zaplecza) na podstawie oryginalnego adresu URL lub przepisanego adresu URL
Aby dowiedzieć się, jak przepisać adres URL za pomocą usługi Application Gateway przy użyciu witryny Azure Portal, zobacz tutaj.
Omówienie ponownego zapisywania w usłudze Application Gateway
Zestaw ponownego zapisywania to kolekcja reguły routingu, warunku i akcji.
Skojarzenie reguły routingu żądań: Konfiguracja ponownego zapisywania kojarzy się z odbiornikiem źródłowym za pomocą reguły routingu. Jeśli używasz reguły routingu typu Podstawowa, konfiguracja ponownego zapisywania kojarzy się z jego odbiornikiem i działa jako globalne ponowne zapisywanie. W przypadku używania reguły routingu opartej na ścieżkach należy zdefiniować konfigurację ponownego zapisywania zgodnie z mapą ścieżek URL. W tym ostatnim przypadku dotyczy tylko określonego obszaru ścieżki witryny. Można zastosować zestaw reguł przepisania do wielu reguł routingu, ale jedna reguła routingu może mieć tylko jedną regułę przepisania skojarzoną z nią.
Warunek ponownego zapisywania: Ta konfiguracja jest opcjonalna. Na podstawie zdefiniowanych warunków usługa Application Gateway ocenia zawartość żądań i odpowiedzi HTTP(S). Kolejna akcja "ponownego zapisywania" występuje, jeśli żądanie HTTP(S) lub odpowiedź jest zgodne z tym warunkiem. Jeśli skojarzysz więcej niż jeden warunek z akcją, akcja występuje tylko wtedy, gdy zostaną spełnione wszystkie warunki. Innymi słowy, jest to operacja logiczna AND. Możesz użyć warunków ponownego zapisywania, aby ocenić zawartość żądań i odpowiedzi HTTP(S). Ta opcjonalna konfiguracja umożliwia wykonanie ponownego zapisywania tylko wtedy, gdy zostanie spełniony co najmniej jeden warunek. Brama aplikacji używa tych typów zmiennych do oceny zawartości żądań i odpowiedzi:
Możesz wybrać następujące typy, aby wyszukać warunek:
- Nagłówek HTTP (żądanie i odpowiedź)
- Obsługiwane zmienne serwera
Warunek umożliwia ocenę, czy określony nagłówek lub zmienna istnieje, analizując, czy ich wartości pasują do określonego wzorca tekstu lub wyrażenia regularnego. W przypadku zaawansowanych konfiguracji ponownego zapisywania można również przechwycić wartość nagłówka lub zmiennej serwera do późniejszego użycia w obszarze Akcja ponownego zapisywania. Dowiedz się więcej o wzorcu i przechwytywaniu.
Akcja ponownego zapisywania: Zestaw akcji ponownego zapisywania umożliwia modyfikowanie nagłówków (żądanie lub odpowiedź) lub składników adresu URL.
Akcja może mieć następujące typy wartości lub ich kombinacje:
- Tekst.
- Wartość nagłówka żądania — aby użyć wartości przechwyconego nagłówka żądania, określ składnię jako
{http_req_headerName}. - Wartość nagłówka odpowiedzi — aby użyć wartości przechwyconego nagłówka odpowiedzi z poprzedniego warunku, określ składnię jako
{http_resp_headerName}. Blok Akcja ponownego zapisywania obsługuje również pole "Dopasowanie wartości nagłówka" dla nagłówka Set-Cookie. To pole opcjonalne umożliwia dopasowanie i przechwycenie wartości określonego nagłówka, gdy istnieje wiele nagłówków Set-Cookie o tej samej nazwie. Aby manipulować przechwyconą wartością określonego pliku cookie, możesz użyć polecenia{capt_header_value_matcher}. Dowiedz się więcej o przechwytywaniu w sekcji Zestaw akcji. - Zmienna serwera — aby użyć zmiennej serwera, określ składnię jako
{var_serverVariable}. Lista obsługiwanych zmiennych serwera.
Uwaga
Użycie pola dopasowywania wartości nagłówka {capt_header_value_matcher} nie jest obecnie obsługiwane za pośrednictwem portalu. W związku z tym należy użyć metody innej niż portal dla wszystkich operacji PUT, jeśli używasz tego pola.
W przypadku ponownego zapisywania adresu URL przy użyciu akcji obsługiwane są następujące operacje:
- Ścieżka adresu URL: nowa wartość, która ma być ustawiona jako ścieżka.
- Ciąg zapytania adresu URL: nowa wartość, do której musi zostać przepisany ciąg zapytania.
- Ponownie oceń mapę ścieżki: określ, czy mapa ścieżek URL musi zostać ponownie obliczona po ponownym zapisaniu. Jeśli ta opcja nie jest zaznaczona, oryginalna ścieżka adresu URL jest używana do dopasowania wzorca ścieżki na mapie ścieżek URL. Jeśli ustawisz tę opcję na true, mapa ścieżki adresu URL zostanie ponownie obliczona, aby sprawdzić dopasowanie ze ścieżką przepisaną. Włączenie tego przełącznika pomaga w rozsyłaniu żądania do innej puli zaplecza po ponownym zapisie.
Dopasowywanie i przechwytywanie wzorców
Usługa Application Gateway obsługuje dopasowywanie i przechwytywanie wzorców w obszarze Warunek i Akcja. W obszarze Akcja obsługuje dopasowywanie wzorców i przechwytywanie tylko dla określonego nagłówka.
Dopasowanie do wzorca
Usługa Application Gateway używa wyrażeń regularnych do dopasowywania wzorców. Podczas pisania składni dopasowania wzorca użyj wyrażeń zgodnych z wyrażeniem regularnym 2 (RE2).
Można użyć dopasowania wzorca zarówno w obszarze Warunek, jak i Akcja.
- Warunek: użyj tego ustawienia, aby dopasować wartości dla nagłówka lub zmiennej serwera. Aby dopasować wzorzec w obszarze "Warunki", użyj właściwości "pattern".
-
Akcja: Dopasowywanie wzorca w obszarze Zestaw akcji jest dostępne tylko dla nagłówka odpowiedzi
Set-Cookie. Aby dopasować wzorzec podSet-Cookiedziałaniem, użyj właściwościHeaderValueMatcher. W przypadku przechwycenia jego wartość może być używana jako{capt_header_value_matcher}. Ponieważ może istnieć wieleSet-Cookienagłówków, dopasowanie wzorca w tym miejscu umożliwia wyszukiwanie określonego pliku cookie. Na przykład w przypadku określonej wersji agenta użytkownika chcesz przepisać nagłówek odpowiedziset-cookiedlacookie2namax-age=3600(jedna godzina). W tym przypadku możesz użyć polecenia- Warunek — typ: nagłówek żądania, nazwa nagłówka: user-agent, wzorzec odpowiadający: *2.0
- Akcja — Typ ponownego zapisywania: Nagłówek odpowiedzi, Typ akcji: Ustaw, Nazwa nagłówka: Set-Cookie, Dopasowanie wartości nagłówka:
cookie2=(.*), Wartość nagłówka:cookie2={capt_header_value_matcher_1};Max-Age=3600
Uwaga
Jeśli używasz zapory aplikacji internetowej usługi Application Gateway z Zestawem Podstawowych Reguł w wersji 3.1 lub starszej, możesz napotkać problemy podczas używania Perl Compatible Regular Expressions (PCRE) w kontekście asercji lookahead i lookbehind (ujemnych lub pozytywnych).
Składnia przechwytywania
Za pomocą wzorców można przechwycić podciąg do późniejszego użycia. Umieść nawiasy wokół podwzór w definicji wyrażenia regularnego. Pierwsza para nawiasów przechowuje jego podciąg w 1, drugą parę w 2 itd. Możesz użyć tak wielu nawiasów, jak chcesz. Perl definiuje więcej zmiennych numerowanych do reprezentowania tych przechwyconych ciągów. Niektóre przykłady można znaleźć w tych wskazówkach dotyczących programowania w języku Perl.
- (\d)(\d) # Dopasuj dwie cyfry, przechwytując je w grupach 1 i 2
- (\d+) # Dopasuj co najmniej jedną cyfrę, przechwytując je wszystkie w grupie 1
- (\d)+ # Dopasuj cyfrę co najmniej raz, przechwytując ostatni w grupie 1
Po przechwyceniu można ich użyć w wartości Zestaw akcji przy użyciu następującego formatu:
- W przypadku przechwytywania nagłówka żądania należy użyć elementu {http_req_headerName_groupNumber}. Na przykład {http_req_User-Agent_1} lub {http_req_User-Agent_2}
- W przypadku przechwytywania nagłówka odpowiedzi należy użyć elementu {http_resp_headerName_groupNumber}. Na przykład {http_resp_Location_1} lub {http_resp_Location_2}. Podczas gdy w przypadku nagłówka odpowiedzi Set-Cookie przechwyconego za pomocą właściwości "HeaderValueMatcher" należy użyć elementu {capt_header_value_matcher_groupNumber}. Na przykład {capt_header_value_matcher_1} lub {capt_header_value_matcher_2}.
- W przypadku zmiennej serwera należy użyć elementu {var_serverVariableName_groupNumber}. Na przykład {var_uri_path_1} lub {var_uri_path_2}
Uwaga
- Nie należy używać / jako prefiksu ani sufiksu w wzorcu, aby dopasować wartość. Na przykład (\d)(\d) będzie odpowiadać dwóm cyfrom. /(\d)(\d)/ nie pasuje do dwóch cyfr.
- Wielkość zmiennej warunku musi odpowiadać wielkości liter zmiennej przechwytywania. Jeśli na przykład moja zmienna warunku to User-Agent, zmienna przechwytywania musi być dla User-Agent (czyli {http_req_User-Agent_2}). Jeśli moja zmienna warunku jest zdefiniowana jako agent użytkownika, zmienna przechwytywania musi być dla agenta użytkownika (czyli {http_req_user-agent_2}).
- Jeśli chcesz użyć całej wartości, nie należy wymieniać liczby. Wystarczy użyć formatu {http_req_headerName}, itp. bez wartości groupNumber.
Zmienne serwera
Usługa Application Gateway używa zmiennych serwera do przechowywania przydatnych informacji o serwerze, połączeniu z klientem i bieżącym żądaniu połączenia. Przykłady przechowywanych informacji obejmują adres IP klienta i typ przeglądarki internetowej. Zmienne serwera zmieniają się dynamicznie, na przykład po załadowaniu nowej strony lub opublikowaniu formularza. Te zmienne umożliwiają ocenę warunków ponownego zapisywania i ponownego zapisywania nagłówków. Aby użyć wartości zmiennych serwera do ponownego zapisania nagłówków, należy określić te zmienne w składni {var_serverVariableName}
Usługa Application Gateway obsługuje następujące zmienne serwera:
| Nazwa zmiennej | opis |
|---|---|
| dodaj x_forwarded_for dla proxy | Pole nagłówka żądania klienta X-Forwarded-For ze zmienną client_ip (zobacz wyjaśnienie w dalszej części tej tabeli) dołączone do niego w formacie IP1, IP2, IP3 itd. Jeśli pole X-Forwarded-For nie znajduje się w nagłówku żądania klienta, zmienna add_x_forwarded_for_proxy jest równa zmiennej $client_ip . Ta zmienna jest przydatna, gdy chcesz ponownie napisać nagłówek X-Forwarded-For ustawiony przez usługę Application Gateway, aby nagłówek zawierał tylko adres IP bez informacji o porcie. |
| obsługiwane szyfry | Lista szyfrów obsługiwanych przez klienta. |
| używane szyfry | Parametry szyfrowania używane na potrzeby ustanowionego połączenia TLS. |
| client_ip | Adres IP klienta, z którego brama aplikacji odebrała żądanie. Jeśli istnieje zwrotny serwer proxy przed bramą aplikacji i klientem źródłowym, client_ip zwraca adres IP zwrotnego serwera proxy. |
| client_port | Port klienta. |
| client_tcp_rtt | Informacje o połączeniu TCP klienta. Dostępne w systemach obsługujących opcję gniazda TCP_INFO. |
| klient_użytkownik | Gdy jest używane uwierzytelnianie HTTP, nazwa użytkownika podana do uwierzytelniania. |
| gospodarz | W tej kolejności pierwszeństwa: nazwa hosta z wiersza żądania, nazwa hosta z pola nagłówka żądania hosta lub nazwa serwera pasującego do żądania. Przykład: W żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikamwartość hosta to contoso.com |
| nazwa cookie_ | Nazwa pliku cookie. |
| metoda_http | Metoda użyta do wykonania żądania adresu URL. Na przykład GET lub POST. |
| http_status | Stan sesji. Na przykład 200, 400 lub 403. |
| http_version | Protokół żądania. Zazwyczaj HTTP/1.0, HTTP/1.1 lub HTTP/2.0. |
| ciąg zapytania | Lista par zmiennych/wartości, które występują po ? w żądanym adresie URL. Przykład: W żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikamquery_string wartość to id=123&title=fabrikam |
| odebrane_bajty | Długość żądania (w tym wiersz żądania, nagłówek i treść żądania). |
| request_query | Argumenty w wierszu żądania. |
| schemat żądania | Schemat żądania: http lub https. |
| żądanie_uri | Pełny oryginalny identyfikator URI żądania (z argumentami). Przykład: w żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikam*request_uri wartość to /article.aspx?id=123&title=fabrikam |
| bytes_wysłane | Liczba bajtów wysłanych do klienta. |
| server_port | Port serwera, który zaakceptował żądanie. |
| protokół połączenia SSL | Protokół ustanowionego połączenia TLS. |
| SSL włączony | "Włączone", jeśli połączenie działa w trybie TLS. W przeciwnym razie pusty ciąg. |
| uri_path | Identyfikuje określony zasób na hoście, do którego klient internetowy chce uzyskać dostęp. Zmienna odwołuje się do oryginalnej ścieżki adresu URL przed manipulacją. Jest to część identyfikatora URI żądania bez argumentów. Na przykład w żądaniu http://contoso.com:8080/article.aspx?id=123&title=fabrikamwartość uri_path to /article.aspx. |
Zmienne serwera uwierzytelniania wzajemnego
Usługa Application Gateway obsługuje następujące zmienne serwera dla scenariuszy wzajemnego uwierzytelniania. Użyj tych zmiennych serwera, tak jak w przypadku innych zmiennych serwera.
| Nazwa zmiennej | opis |
|---|---|
| certyfikat klienta | Certyfikat klienta w formacie PEM dla ustanowionego połączenia SSL. |
| data_wygasnięcia_certyfikatu_klienta | Data zakończenia certyfikatu klienta. |
| odcisk_palców_certifikatu_klienta | Odcisk palca SHA1 certyfikatu klienta dla ustanowionego połączenia SSL. |
| wydawca certyfikatu klienta | Parametry "issuer DN" certyfikatu klienta dla ustanowionego połączenia SSL. |
| numer seryjny certyfikatu klienta | Numer seryjny certyfikatu klienta dla ustanowionego połączenia SSL. |
| data_rozpoczęcia_ważności_certyfikatu_klienta | Data rozpoczęcia certyfikatu klienta. |
| temat certyfikatu klienta | Parametry "subject DN" certyfikatu klienta dla ustanowionego połączenia SSL. |
| weryfikacja certyfikatu klienta | Wynik weryfikacji certyfikatu klienta: SUCCESS, FAILED:<reason> lub NONE , jeśli certyfikat nie był obecny. |
Typowe scenariusze ponownego zapisywania nagłówka
Usuwanie informacji o porcie z nagłówka X-Forwarded-For
Usługa Application Gateway wstawia nagłówek X-Forwarded-For do wszystkich żądań przed przekazaniem żądań do zaplecza. Ten nagłówek jest rozdzielaną przecinkami listą portów IP. Mogą istnieć scenariusze, w których serwery zaplecza muszą zawierać tylko nagłówki zawierające adresy IP. Aby usunąć informacje o porcie z nagłówka X-Forwarded-For, możesz użyć ponownego zapisywania nagłówka. Jednym ze sposobów wykonania tej czynności jest ustawienie nagłówka na zmienną serwera add_x_forwarded_for_proxy. Alternatywnie możesz również użyć zmiennej client_ip:
Modyfikowanie adresu URL przekierowania
Modyfikowanie adresu URL przekierowania może być przydatne w pewnych okolicznościach. Na przykład możesz pierwotnie przekierować klientów do ścieżki takiej jak "/blog", ale teraz chcesz wysłać je do "/updates" ze względu na zmianę struktury zawartości.
Ostrzeżenie
Może być konieczne zmodyfikowanie adresu URL przekierowania podczas konfigurowania usługi Application Gateway w celu zastąpienia nazwy hosta w kierunku zaplecza. W tej konfiguracji zaplecze widzi inną nazwę hosta niż przeglądarka. Przekierowanie nie używa poprawnej nazwy hosta. Ta konfiguracja nie jest zalecana.
Aby uzyskać więcej informacji na temat ograniczeń i implikacji takiej konfiguracji, zobacz Zachowywanie oryginalnej nazwy hosta HTTP między zwrotnym serwerem proxy a aplikacją internetową zaplecza. Aby uzyskać zalecaną konfigurację usługi App Service, zobacz sekcję "Domena niestandardowa (zalecana)" w temacie Konfigurowanie usługi App Service z usługą Application Gateway. Ponowne zapisywanie nagłówka lokalizacji w odpowiedzi zgodnie z opisem w poniższym przykładzie powinno być traktowane jako obejście problemu i nie dotyczy głównej przyczyny.
Gdy usługa App Service wysyła odpowiedź przekierowania, używa tej samej nazwy hosta w nagłówku lokalizacji odpowiedzi co w żądaniu odbieranym z bramy aplikacji. Dlatego klient wysyła żądanie bezpośrednio do contoso.azurewebsites.net/path2 zamiast przechodzić przez bramę aplikacji (contoso.com/path2). Pomijanie bramy aplikacji nie jest pożądane.
Ten problem można rozwiązać, ustawiając nazwę hosta w nagłówku lokalizacji na nazwę domeny bramy aplikacji.
Poniżej przedstawiono kroki zastępowania nazwy hosta:
Utwórz regułę ponownego zapisywania z warunkiem, który sprawdza, czy nagłówek lokalizacji w odpowiedzi zawiera azurewebsites.net. Wprowadź wzorzec "(https?)://.azurewebsites.net(.).
Wykonaj akcję, aby ponownie zapisać nagłówek lokalizacji, tak aby miał nazwę hosta bramy aplikacji. Wprowadź
{http_resp_Location_1}://contoso.com{http_resp_Location_2}jako wartość nagłówka. Alternatywnie możesz również użyć zmiennejhostserwera, aby ustawić nazwę hosta tak, aby odpowiadała oryginalnemu żądaniu.
Implementowanie nagłówków HTTP zabezpieczeń w celu zapobiegania lukom w zabezpieczeniach
Możesz naprawić kilka luk w zabezpieczeniach, implementując niezbędne nagłówki w odpowiedzi aplikacji. Te nagłówki zabezpieczeń obejmują X-XSS-Protection, Strict-Transport-Security i Content-Security-Policy. Za pomocą usługi Application Gateway można ustawić te nagłówki dla wszystkich odpowiedzi.
Usuwanie niechcianych nagłówków
Możesz usunąć nagłówki, które ujawniają poufne informacje z odpowiedzi HTTP. Możesz na przykład usunąć informacje, takie jak nazwa serwera zaplecza, system operacyjny lub szczegóły biblioteki. Za pomocą bramy aplikacji można usunąć następujące nagłówki:
Nie można utworzyć reguły ponownego zapisywania w celu usunięcia nagłówka hosta. Jeśli spróbujesz utworzyć regułę ponownego zapisywania z typem akcji ustawionym na usunięcie, a nagłówek ustawiony na host, spowoduje to wystąpienie błędu.
Sprawdzanie obecności nagłówka
Możesz ocenić żądanie HTTP lub nagłówek odpowiedzi pod kątem obecności nagłówka lub zmiennej serwera. Ta ocena jest przydatna, gdy chcesz ponownie napisać nagłówek tylko wtedy, gdy istnieje określony nagłówek.
Typowe scenariusze ponownego zapisywania adresów URL
Wybór ścieżki opartej na parametrach
Aby wykonać scenariusze, w których chcesz wybrać pulę zaplecza na podstawie wartości nagłówka, części adresu URL lub ciągu zapytania w żądaniu, użyj kombinacji funkcji ponownego zapisywania adresów URL i routingu opartego na ścieżkach.
Utwórz zestaw ponownego zapisywania z warunkiem, który sprawdza określony parametr (ciąg zapytania, nagłówek itp.), a następnie wykonuje akcję, w której zmienia ścieżkę adresu URL (upewnij się, że mapa ścieżki ponownej oceny jest włączona). Skojarz zestaw ponownego zapisywania z regułą opartą na ścieżkach. Reguła oparta na ścieżce musi zawierać te same ścieżki adresu URL określone w zestawie ponownego zapisywania i odpowiadającej im puli zaplecza.
W związku z tym zestaw ponownego zapisywania umożliwia sprawdzenie określonego parametru i przypisanie jej nowej ścieżki, a reguła oparta na ścieżkach umożliwia przypisanie pul zaplecza do tych ścieżek. Tak długo, jak jest włączona opcja "Przeszacowanie mapy ścieżek", trasy ruchu są konfigurowane na podstawie ścieżki określonej w zestawie modyfikacji.
Aby zapoznać się z przykładem przypadku użycia przy użyciu ciągów zapytania, zobacz Route traffic using parameter based path selection in portal (Kierowanie ruchem przy użyciu wyboru ścieżki opartej na parametrach w portalu).
Ponowne zapisywanie parametrów ciągu zapytania na podstawie adresu URL
Rozważmy scenariusz witryny internetowej zakupów, w którym link widoczny dla użytkownika jest prosty i czytelny, ale serwer zaplecza potrzebuje parametrów ciągu zapytania, aby wyświetlić właściwą zawartość.
W takim przypadku usługa Application Gateway może przechwytywać parametry z adresu URL i dodawać pary klucz-wartość ciągu zapytania z tych parametrów w adresie URL. Na przykład, jeśli użytkownik chce przekształcić https://www.contoso.com/fashion/shirts na https://www.contoso.com/buy.aspx?category=fashion&product=shirts, można to osiągnąć, stosując następującą konfigurację przepisywania adresów URL.
Warunek — jeśli zmienna uri_path serwera jest równa wzorcowi /(.+)/(.+)
Akcja — ustaw ścieżkę adresu URL na buy.aspx i ciąg zapytania na category={var_uri_path_1}&product={var_uri_path_2}
Aby zapoznać się z przewodnikiem krok po kroku dotyczącym osiągnięcia opisanego wcześniej scenariusza, zobacz Ponowne zapisywanie adresu URL w usłudze Application Gateway przy użyciu witryny Azure Portal.
Ponowne zapisywanie typowych pułapek konfiguracji
Nie można włączyć opcji "Ponowne ocenianie mapy ścieżek" dla podstawowych reguł trasowania żądań. To ograniczenie uniemożliwia nieskończoną pętlę oceny dla podstawowej reguły routingu.
W przypadku reguł routingu ścieżek potrzebna jest co najmniej jedna reguła przepisania warunkowego lub jedna reguła przepisania bez włączonej opcji 'Reevaluate path map'. To wymaganie uniemożliwia nieskończoną pętlę oceny dla reguły routingu opartej na ścieżkach.
Jeśli pętla jest tworzona dynamicznie na podstawie danych wejściowych klienta, żądania przychodzące kończą się kodem błędu 500. Usługa Application Gateway nadal obsługuje inne żądania bez pogorszenia w tym scenariuszu.
Używanie ponownego zapisywania adresu URL lub ponownego zapisywania nagłówka hosta za pomocą zapory aplikacji internetowej (jednostka SKU WAF_v2)
Podczas konfigurowania ponownego zapisywania adresu URL lub ponownego zapisywania nagłówka hosta ocena zapory aplikacji internetowej odbywa się po modyfikacji nagłówka żądania lub parametrów adresu URL (po ponownym zapisaniu). Po usunięciu ponownego zapisywania adresu URL lub ponownego zapisywania nagłówka hosta w usłudze Application Gateway ocena zapory aplikacji internetowej jest wykonywana przed ponownym zapisywaniem nagłówka (wstępnego zapisywania). Ta kolejność gwarantuje, że reguły zapory aplikacji internetowej mają zastosowanie do końcowego żądania, które otrzymuje pula zaplecza.
Załóżmy na przykład, że masz następującą regułę ponownego zapisywania nagłówka dla nagłówka "Accept" : "text/html" — jeśli wartość nagłówka "Accept" jest równa "text/html", zapisz ponownie wartość na "image/png".
Po skonfigurowaniu tylko ponownego zapisywania nagłówka ocena zapory aplikacji internetowej odbywa się w systemie "Accept" : "text/html". Jednak podczas konfigurowania przepisywania adresu URL lub przepisywania nagłówka hosta ocena WAF odbywa się na "Accept" : "image/png".
Ponowne zapisywanie adresów URL a przekierowywanie adresów URL
W przypadku ponownego zapisywania adresu URL usługa Application Gateway ponownie zapisuje adres URL przed wysłaniem żądania do zaplecza. Ta akcja nie zmienia tego, co użytkownicy widzą w przeglądarce, ponieważ zmiany są ukryte przed użytkownikiem.
W przypadku przekierowania adresu URL usługa Application Gateway wysyła odpowiedź przekierowania do klienta przy użyciu nowego adresu URL. Ta odpowiedź wymaga od klienta ponownego wysłanie żądania do nowego adresu URL podanego w przekierowaniu. Adres URL, który użytkownik widzi w przeglądarce, aktualizuje nowy adres URL.
Ograniczenia
- Ponowne zapisywanie nie jest obsługiwane, gdy brama aplikacji jest skonfigurowana do przekierowywania żądań lub wyświetlania niestandardowej strony błędu.
- Nazwy nagłówków żądania mogą zawierać znaki alfanumeryczne i łączniki. Nazwy nagłówków zawierające inne znaki są ignorowane, gdy żądanie jest wysyłane do docelowego serwera zaplecza.
- Nazwy nagłówków odpowiedzi mogą zawierać dowolne znaki alfanumeryczne i określone symbole zgodnie z definicją w dokumencie RFC 7230.
- Nie można ponownie napisać nagłówków
X-Original-Host,Connectioniupgrade. - Ponowne zapisywanie nie jest obsługiwane w przypadku odpowiedzi 4xx i 5xx generowanych bezpośrednio z usługi Application Gateway.