Udostępnij za pośrednictwem


Ponowne zapisywanie nagłówków i adresów URL HTTP za pomocą usługi Application Gateway

Usługa Application Gateway umożliwia ponowne zapisywanie wybranej zawartości żądań i odpowiedzi. Dzięki tej funkcji można tłumaczyć adresy URL, parametry ciągu zapytania oraz modyfikować nagłówki żądań i odpowiedzi. Umożliwia również dodawanie warunków w celu upewnienia 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 te nagłówki ponownie, można wykonać ważne zadania, takie jak dodawanie pól nagłówków związanych z zabezpieczeniami, takich jak HSTS/ X-XSS-Protection, usuwanie pól nagłówka odpowiedzi, które mogą ujawniać poufne informacje i usuwanie informacji o porcie z nagłówków X-Forwarded-For.

Możesz ponownie napisać wszystkie nagłówki w żądaniach i odpowiedziach, z wyjątkiem Connectionnagłówków 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.

Diagram przedstawiający nagłówki w pakietach żądań i odpowiedzi.

Ś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:

  • Ponowne zapisywanie nazwy hosta, ścieżki i ciągu zapytania adresu 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 ponownie napisać adres URL w usłudze Application Gateway przy użyciu witryny Azure Portal, zobacz tutaj.

Diagram opisujący proces ponownego zapisywania adresu URL za pomocą usługi Application Gateway.

Omówienie ponownego zapisywania w usłudze Application Gateway

Zestaw ponownego zapisywania jest kolekcją reguły routingu, warunku i akcji.

  • Skojarzenie reguły routingu żądań: konfiguracja ponownego zapisywania jest skojarzona z odbiornikiem źródłowym za pośrednictwem reguły routingu. Jeśli używasz reguły routingu typu Podstawowa, konfiguracja ponownego zapisywania jest skojarzona z jego odbiornikiem i działa jako globalne ponowne zapisywanie. W przypadku korzystania z reguły routingu opartej na ścieżkach konfiguracja ponownego zapisywania jest definiowana zgodnie z mapą ścieżek URL. W tym ostatnim przypadku dotyczy tylko określonego obszaru ścieżki witryny. Można zastosować zestaw ponownego zapisywania do wielu reguł routingu, ale reguła routingu może mieć tylko jedną ponownie skojarzona z nią reguła.

  • Warunek ponownego zapisywania: jest to opcjonalna konfiguracja. Na podstawie zdefiniowanych warunków usługa Application Gateway oceni zawartość żądań i odpowiedzi HTTP(S). Kolejna akcja "ponownego zapisywania" zostanie wykonana, 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:

    Warunek pozwala ocenić, czy określony nagłówek lub zmienna istnieje, pasując do ich wartości za pomocą tekstu lub wzorca 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 ponowne zapisywanie 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ć przechwyconej wartości nagłówka żądania, określ składnię jako {http_req_headerName}.
    • Wartość nagłówka odpowiedzi — aby użyć przechwyconej wartości nagłówka odpowiedzi z poprzedniego warunku, określ składnię jako {http_resp_headerName}. Możesz użyć {capt_header_value_matcher} wartości przechwyconej z nagłówka odpowiedzi "Set-Cookie" zestawu akcji. Dowiedz się więcej o przechwytywaniu w obszarze 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 nadal używać metody innej niż portal dla 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 zostać 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 zachowano niezaznaczone, oryginalna ścieżka adresu URL będzie używana do dopasowania wzorca ścieżki w mapie ścieżki adresu URL. Jeśli ustawiono wartość 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

Dopasowywanie i przechwytywanie patten jest obsługiwane w obszarze Warunek i akcja (w obszarze Akcja jest obsługiwana 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 należy użyć wyrażeń zgodnych z wyrażeniem regularnym 2 (RE2).

Można użyć dopasowania wzorca zarówno w obszarze Warunek, jak i Akcja.

  • Warunek: służy do dopasowywania 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 ustawiania plików cookie w ramach akcji, użyj właściwości "HeaderValueMatcher". W przypadku przechwycenia jego wartość może być używana jako {capt_header_value_matcher}. Ponieważ istnieje wiele plików Set-Cookie, wzorzec pasujący tutaj umożliwia wyszukiwanie określonego pliku cookie. Przykład: w przypadku określonej wersji agenta użytkownika chcesz ponownie napisać nagłówek odpowiedzi set-cookie dla "cookie2" z wartością max-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: Set, Nazwa nagłówka: Set-Cookie, Header Value Matcher: 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 (WAF) z podstawowym zestawem reguł 3.1 lub starszym, mogą wystąpić problemy podczas korzystania z zgodnych wyrażeń regularnych perl (PCRE) podczas wykonywania zapytań i asercji lookbehind (ujemnych lub dodatnich).

Składnia przechwytywania

Wzorce mogą również służyć do przechwytywania podciągów 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; Narzędzie Perl po prostu definiuje więcej zmiennych ponumerowanych, aby reprezentować te przechwycone ciągi. Przykład można znaleźć w tym przewodniku programowania 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

  • Użyj wartości / do prefiksu i sufiksu wzorzec nie powinien być określony we 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 agenta użytkownika (tj. {http_req_User-Agent_2}). Jeśli moja zmienna warunku jest zdefiniowana jako agent użytkownika, zmienna przechwytywania musi być dla agenta użytkownika (tj. {http_req_user-agent_2}).
  • Jeśli chcesz użyć wartości całkowitej, nie należy wspomnieć o liczbie. 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
add_x_forwarded_for_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.
ciphers_supported Lista szyfrów obsługiwanych przez klienta.
ciphers_used 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.
client_user Gdy jest używane uwierzytelnianie HTTP, nazwa użytkownika podana do uwierzytelniania.
host 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.
http_method 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.
query_string Lista par zmiennych/wartości, które są zgodne z "?" 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
received_bytes Długość żądania (w tym wiersz żądania, nagłówek i treść żądania).
request_query Argumenty w wierszu żądania.
request_scheme Schemat żądania: http lub https.
request_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
sent_bytes Liczba bajtów wysłanych do klienta.
server_port Port serwera, który zaakceptował żądanie.
ssl_connection_protocol Protokół ustanowionego połączenia TLS.
ssl_enabled "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 w taki sam sposób jak powyżej z innymi zmiennymi serwera.

Nazwa zmiennej opis
client_certificate Certyfikat klienta w formacie PEM dla ustanowionego połączenia SSL.
client_certificate_end_date Data zakończenia certyfikatu klienta.
client_certificate_fingerprint Odcisk palca SHA1 certyfikatu klienta dla ustanowionego połączenia SSL.
client_certificate_issuer Parametry "issuer DN" certyfikatu klienta dla ustanowionego połączenia SSL.
client_certificate_serial Numer seryjny certyfikatu klienta dla ustanowionego połączenia SSL.
client_certificate_start_date Data rozpoczęcia certyfikatu klienta.
client_certificate_subject Parametry "subject DN" certyfikatu klienta dla ustanowionego połączenia SSL.
client_certificate_verification 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:

Zrzut ekranu przedstawiający akcję usuwania portu.

Modyfikowanie adresu URL przekierowania

Modyfikacja adresu URL przekierowania może być przydatna w pewnych okolicznościach. Na przykład: klienci zostali pierwotnie przekierowani do ścieżki takiej jak "/blog", ale teraz powinni zostać wysłani do "/updates" ze względu na zmianę struktury zawartości.

Ostrzeżenie

Potrzeba zmodyfikowania adresu URL przekierowania czasami pojawia się w kontekście konfiguracji, w której usługa Application Gateway jest skonfigurowana do zastąpienia nazwy hosta w kierunku zaplecza. Nazwa hosta widoczna w zapleczu różni się w takim przypadku od nazwy hosta widocznej w przeglądarce. W takiej sytuacji przekierowanie nie będzie używać poprawnej nazwy hosta. Ta konfiguracja nie jest zalecana.

Ograniczenia i implikacje takiej konfiguracji opisano w artykule Zachowaj oryginalną nazwę hosta HTTP między zwrotnym serwerem proxy a aplikacją internetową zaplecza. Zalecaną konfiguracją usługi App Service jest wykonanie instrukcji dotyczących "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:

  1. Utwórz regułę ponownego zapisywania z warunkiem, który ocenia, czy nagłówek lokalizacji w odpowiedzi zawiera azurewebsites.net. Wprowadź wzorzec (https?):\/\/.*azurewebsites\.net(.*)$.

  2. Wykonaj akcję, aby ponownie zapisać nagłówek lokalizacji, tak aby miał nazwę hosta bramy aplikacji. Zrób to, wprowadzając {http_resp_Location_1}://contoso.com{http_resp_Location_2} jako wartość nagłówka. Alternatywnie możesz również użyć zmiennej host serwera, aby ustawić nazwę hosta tak, aby odpowiadała oryginalnemu żądaniu.

    Zrzut ekranu przedstawiający akcję modyfikowania nagłówka lokalizacji.

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.

Ekran przedstawiający nagłówek zabezpieczeń.

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:

Zrzut ekranu przedstawiający akcję usuwania nagłówka.

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.

Na ekranie pokazano obecność akcji sprawdzania nagłówka.

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, możesz użyć kombinacji funkcji ponownego zapisywania adresów URL i routingu opartego na ścieżkach.

W tym celu 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). Zestaw ponownego zapisywania musi być następnie skojarzony 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 użytkownikom sprawdzenie określonego parametru i przypisanie jej nowej ścieżki, a reguła oparta na ścieżkach umożliwia użytkownikom przypisywanie pul zaplecza do tych ścieżek. Tak długo, jak jest włączona opcja "Ponowne szacowanie mapy ścieżek", ruch jest kierowany na podstawie ścieżki określonej w zestawie ponownego zapisywania.

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 widoczny link użytkownika powinien być 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 z adresu URL. Załóżmy na przykład, że użytkownik chce ponownie napisać polecenie , https://www.contoso.com/fashion/shirts https://www.contoso.com/buy.aspx?category=fashion&product=shirtsmożna to osiągnąć za pomocą następującej konfiguracji ponownego zapisywania adresów URL.

Warunek — jeśli zmienna uri_path serwera jest równa wzorzec /(.+)/(.+)

Scenariusz ponownego zapisywania adresów URL 2–1.

Akcja — ustaw ścieżkę adresu URL na buy.aspx i ciąg zapytania na category={var_uri_path_1}&product={var_uri_path_2}

Scenariusz ponownego zapisywania adresów URL 2–2.

Aby zapoznać się z przewodnikiem krok po kroku dotyczącym osiągnięcia opisanego powyżej scenariusza, zobacz Ponowne zapisywanie adresu URL w usłudze Application Gateway przy użyciu witryny Azure Portal

Ponowne zapisywanie typowych pułapek konfiguracji

  • Włączenie opcji "Ponowne ocena mapy ścieżki" nie jest dozwolone dla podstawowych reguł routingu żądań. Zapobiega to nieskończonej pętli ewaluacyjnej dla podstawowej reguły routingu.

  • Musi istnieć co najmniej 1 reguła ponownego zapisywania warunkowego lub 1 reguła ponownego zapisywania, która nie ma włączonej "Ponowne ocenianie mapy ścieżek" dla reguł routingu opartego na ścieżkach, aby zapobiec nieskończonej pętli oceny dla reguły routingu opartego na ścieżkach.

  • Żądania przychodzące zostaną zakończone kodem błędu 500 w przypadku, gdy pętla jest tworzona dynamicznie na podstawie danych wejściowych klienta. Usługa Application Gateway nadal obsługuje inne żądania bez żadnego pogorszenia w takim 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). A 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 (ponowne zapisywanie). Ta kolejność gwarantuje, że reguły zapory aplikacji internetowej są stosowane do końcowego żądania, które zostanie odebrane przez pulę 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".

W tym miejscu tylko po skonfigurowaniu ponownego zapisywania nagłówka ocena zapory aplikacji internetowej jest wykonywana na stronie "Accept" : "text/html". Jednak podczas konfigurowania ponownego zapisywania adresu URL lub ponownego zapisywania nagłówka hosta ocena zapory aplikacji internetowej jest wykonywana w systemie "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. Nie spowoduje to zmiany, które 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. To z kolei 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.

Ponowne zapisywanie a przekierowywanie.

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 zostaną odrzucone, gdy żądanie zostanie wysłane do obiektu docelowego 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 przepisać nagłówków połączenia i uaktualnienia
  • Ponowne zapisywanie nie jest obsługiwane w przypadku odpowiedzi 4xx i 5xx generowanych bezpośrednio z usługi Application Gateway

Następne kroki