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.

Obsługiwane typy ponownego zapisywania

Nagłówki żądań i odpowiedzi

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.

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.

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.

Obsługiwane nagłówki

Możesz ponownie zapisać wszystkie nagłówki w żądaniach i odpowiedziach, z wyjątkiem nagłówków Połączenie i Uaktualnij. Możesz również użyć bramy aplikacji, aby utworzyć nagłówki niestandardowe i dodać je do żądań i odpowiedzi kierowanych przez nią.

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

Ponowne zapisywanie akcji

Akcje ponownego zapisywania służą do określania adresu URL. Nagłówki żądań lub nagłówki odpowiedzi, które chcesz przepisać i nową wartość docelową adresu URL. Wartość adresu URL lub nowego lub istniejącego nagłówka można ustawić na następujące typy wartości:

  • Text
  • Nagłówek żądania. Aby określić nagłówek żądania, należy użyć składni {http_req_headerName}
  • Nagłówek odpowiedzi. Aby określić nagłówek odpowiedzi, należy użyć składni {http_resp_headerName}
  • Zmienna serwera. Aby określić zmienną serwera, należy użyć składni {var_serverVariable}. Zobacz listę obsługiwanych zmiennych serwera
  • Kombinacja tekstu, nagłówka żądania, nagłówka odpowiedzi i zmiennej serwera.

Ponowne zapisywanie warunków

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:

  • Nagłówki HTTP w żądaniu
  • Nagłówki HTTP w odpowiedzi
  • Zmienne serwera usługi Application Gateway

Można użyć warunku, aby ocenić, czy określona zmienna jest obecna, czy określona zmienna pasuje do określonej wartości, czy określona zmienna pasuje do określonego wzorca.

Dopasowanie wzorca

Usługa Application Gateway używa wyrażeń regularnych do dopasowywania wzorców w warunku. Podczas pisania warunków należy używać wyrażeń zgodnych z wyrażeniem regularnym 2 (RE2). Jeśli używasz zapory aplikacji internetowej usługi Application Gateway z podstawowym zestawem reguł w wersji 3.1 lub starszej, mogą wystąpić problemy podczas korzystania z wyrażeń regularnych zgodnych z platformą Perl (PCRE). Problemy mogą wystąpić podczas korzystania z asercji lookahead i lookbehind (negatywnych lub pozytywnych).

Przechwytywanie

Aby przechwycić podciąg do późniejszego użycia, umieść nawiasy wokół podwzorca zgodnego z definicją wyrażenia regularnego warunku. 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. Kilka przykładów z odwołania:

  • (\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

Uwaga

Użycie funkcji do prefiksu / i sufiksu wzorca nie powinno być określone w wzorcu, aby dopasować wartość. Na przykład (\d)(\d) pasuje do dwóch cyfr. /(\d)(\d)/ nie pasuje do dwóch cyfr.

Po przechwyceniu można odwoływać się do nich w zestawie 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}
  • 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

Wielkość zmiennej warunku musi odpowiadać wielkości liter zmiennej przechwytywania. Jeśli na przykład zmienna warunku jest zdefiniowana jako user-agent, zmienna przechwytywania musi być dla agenta użytkownika ({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
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.

Ponowne zapisywanie konfiguracji

Aby skonfigurować regułę ponownego zapisywania, należy utworzyć zestaw reguł ponownego zapisywania i dodać w niej konfigurację reguły ponownego zapisywania.

Zestaw reguł ponownego zapisywania zawiera:

  • Skojarzenie reguły routingu żądań: konfiguracja ponownego zapisywania jest skojarzona z odbiornikiem źródłowym za pośrednictwem reguły routingu. W przypadku korzystania z podstawowej reguły routingu konfiguracja ponownego zapisywania jest skojarzona z odbiornikiem źródłowym i jest globalnym zapisywaniem nagłówka. W przypadku korzystania z reguły routingu opartej na ścieżkach konfiguracja ponownego zapisywania jest definiowana na mapie ścieżek URL. W takim przypadku ma zastosowanie tylko do określonego obszaru ścieżki witryny. Można utworzyć wiele zestawów ponownego zapisywania i zastosować każdy ponowny zapis ustawiony na wiele odbiorników. Można jednak zastosować tylko jeden ponowny zapis ustawiony na określony odbiornik.

  • Warunek ponownego zapisywania: ta konfiguracja jest opcjonalna. Ponowne zapisywanie warunków ocenia zawartość żądań i odpowiedzi HTTP(S). Akcja ponownego zapisywania występuje, jeśli żądanie HTTP(S) lub odpowiedź jest zgodne z warunkiem ponownego zapisywania. Jeśli skojarzysz więcej niż jeden warunek z akcją, akcja występuje tylko wtedy, gdy zostaną spełnione wszystkie warunki. Innymi słowy, operacja jest operacją logiczną AND.

  • Typ ponownego zapisywania: dostępne są 3 typy ponownego zapisywania:

    • Ponowne zapisywanie nagłówków żądań
    • Ponowne zapisywanie nagłówków odpowiedzi
    • Ponowne zapisywanie składników adresu URL
      • Ścieżka adresu URL: wartość, do której ma zostać przepisana ścieżka.
      • Ciąg zapytania adresu URL: wartość, do której ma zostać przepisany ciąg zapytania.
      • Przeszacuj mapę ścieżek: służy do określania, czy mapa ścieżek URL ma zostać ponownie oceniona, czy nie. Jeśli zachowano niezaznaczone, oryginalna ścieżka adresu URL jest 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 zwarta, aby sprawdzić dopasowanie ze ścieżką przepisaną. Włączenie tego przełącznika pomaga w rozsyłaniu żądania do innej puli zaplecza po ponownym zapisie.

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".

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

  • Jeśli odpowiedź ma więcej niż jeden nagłówek o tej samej nazwie, ponowne zapisywanie wartości jednego z tych nagłówków powoduje usunięcie innych nagłówków w odpowiedzi. Może się to zdarzyć w nagłówku Set-Cookie, ponieważ w odpowiedzi może znajdować się więcej niż jeden nagłówek Set-Cookie. Jednym z takich scenariuszy jest użycie usługi App Service z bramą aplikacji i skonfigurowanie koligacji sesji opartej na plikach cookie w bramie aplikacji. W takim przypadku odpowiedź zawiera dwa nagłówki Set-Cookie. Na przykład: jeden używany przez usługę App Service, Set-Cookie: ARRAffinity=ba127f1caf6ac822b2347cc18bba0364d699ca1ad44d20e0ec01ea80cda2a735;Path=/;HttpOnly;Domain=sitename.azurewebsites.net a drugi dla koligacji bramy aplikacji, Set-Cookie: ApplicationGatewayAffinity=c1a2bd51lfd396387f96bl9cc3d2c516; Path=/. Ponowne zapisywanie jednego z nagłówków Set-Cookie w tym scenariuszu może spowodować usunięcie innego nagłówka Set-Cookie z odpowiedzi.
  • 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ą odrzucane, gdy żądanie jest wysył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