Application Gateway ile HTTP üst bilgilerini ve URL'yi yeniden yazma

Application Gateway, seçilen istek ve yanıt içeriğini yeniden yazmanıza olanak tanır. Bu özellik sayesinde URL'leri, sorgu dizesi parametrelerini çevirebilir, istek ve yanıt üst bilgilerini değiştirebilirsiniz. Ayrıca, URL'nin veya belirtilen üst bilgilerin yalnızca belirli koşullar karşılandığında yeniden yazıldığından emin olmak için koşullar eklemenize olanak tanır. Bu koşullar istek ve yanıt bilgilerine dayanır.

Dekont

HTTP üst bilgisi ve URL yeniden yazma özellikleri yalnızca Application Gateway v2 SKU'su için kullanılabilir

Desteklenen yeniden yazma türleri

İstek ve yanıt üst bilgileri

HTTP üst bilgileri, istemcinin ve sunucunun istek veya yanıtla ek bilgi geçirmesine olanak tanır. Bu üst bilgileri yeniden yazarak, HSTS/ X-XSS-Protection gibi güvenlikle ilgili üst bilgi alanları ekleme, hassas bilgileri ortaya çıkarabilecek yanıt üst bilgisi alanlarını kaldırma ve X-Forwarded-For üst bilgilerinden bağlantı noktası bilgilerini kaldırma gibi önemli görevleri gerçekleştirebilirsiniz.

Application Gateway, istek ve yanıt paketleri istemci ve arka uç havuzları arasında hareket ederken HTTP isteği ve yanıt üst bilgilerini eklemenize, kaldırmanıza veya güncelleştirmenize olanak tanır.

Azure portalını kullanarak Application Gateway ile istek ve yanıt üst bilgilerini yeniden yazmayı öğrenmek için buraya bakın.

img

Desteklenen üst bilgiler

Bağlan ve Yükseltme üst bilgileri dışında istek ve yanıtlardaki tüm üst bilgileri yeniden yazabilirsiniz. Özel üst bilgiler oluşturmak ve bunları bu üst bilgiler aracılığıyla yönlendirilmekte olan isteklere ve yanıtlara eklemek için de uygulama ağ geçidini kullanabilirsiniz.

URL yolu ve sorgu dizesi

Application Gateway'de URL yeniden yazma özelliğiyle şunları yapabilirsiniz:

  • İstek URL'sinin ana bilgisayar adını, yolunu ve sorgu dizesini yeniden yazın

  • Dinleyicideki tüm isteklerin URL'sini veya yalnızca ayarladığınız koşullardan biriyle veya birden çok koşulla eşleşen istekleri yeniden yazmayı seçin. Bu koşullar istek özelliklerini (istek üst bilgisi ve sunucu değişkenleri) temel alır.

  • İsteği özgün URL'ye veya yeniden yazılan URL'ye göre yönlendirmeyi seçin (arka uç havuzunu seçin)

Azure portalını kullanarak Application Gateway ile URL'yi yeniden yazmayı öğrenmek için buraya bakın.

Diagram that describes the process for rewriting a URL with Application Gateway.

Eylemleri yeniden yazma

Yeniden yazmak istediğiniz URL'yi, istek üst bilgilerini veya yanıt üst bilgilerini ve bunları yeniden yazmak istediğiniz yeni değeri belirtmek için yeniden yazma eylemlerini kullanırsınız. BIR URL'nin veya yeni veya mevcut üst bilginin değeri şu değer türlerine ayarlanabilir:

  • Metin
  • İstek üst bilgisi. İstek üst bilgisi belirtmek için {http_req_headerName} söz dizimini kullanmanız gerekir
  • Yanıt üst bilgisi. Yanıt üst bilgisi belirtmek için {http_resp_headerName} söz dizimini kullanmanız gerekir
  • Sunucu değişkeni. Bir sunucu değişkeni belirtmek için {var_serverVariable} söz dizimini kullanmanız gerekir. Desteklenen sunucu değişkenleri listesine bakın
  • Metin, istek üst bilgisi, yanıt üst bilgisi ve sunucu değişkeni birleşimi.

Koşulları Yeniden Yaz

HTTP(S) isteklerinin ve yanıtlarının içeriğini değerlendirmek ve yalnızca bir veya daha fazla koşul karşılandığında yeniden yazma gerçekleştirmek için isteğe bağlı bir yapılandırma olan yeniden yazma koşullarını kullanabilirsiniz. Uygulama ağ geçidi, isteklerin ve yanıtların içeriğini değerlendirmek için şu tür değişkenleri kullanır:

  • İstekteki HTTP üst bilgileri
  • Yanıttaki HTTP üst bilgileri
  • Application Gateway sunucu değişkenleri

Belirtilen değişkenin mevcut olup olmadığını, belirtilen değişkenin belirli bir değerle eşleşip eşleşmediğini veya belirtilen bir değişkenin belirli bir desenle eşleşip eşleşmediğini değerlendirmek için bir koşul kullanabilirsiniz.

Desen Eşleştirme

Application Gateway, koşulda desen eşleştirme için normal ifadeler kullanır. Koşullarınızı yazarken Normal İfade 2 (RE2) uyumlu ifadeler kullanmalısınız. Çekirdek Kural Kümesi 3.1 veya önceki bir sürüme sahip bir Application Gateway Web Uygulaması Güvenlik Duvarı (WAF) çalıştırıyorsanız, lookahead ve lookbehind (negatif veya pozitif) onayları yaparken Perl Uyumlu Normal İfadeler (PCRE) kullanırken sorunlarla karşılaşabilirsiniz.

Yakalama

Daha sonra kullanmak üzere bir alt dize yakalamak için, alt şeridin çevresine bu alt dizeyle eşleşen parantezleri koşul regex tanımına yerleştirin. İlk parantez çifti alt dizesini 1, ikinci çifti 2'de vb. depolar. İstediğiniz kadar parantez kullanabilirsiniz; Perl, yakalanan bu dizeleri temsil etmek için daha fazla numaralandırılmış değişken tanımlamaya devam eder. Başv'dan bazı örnekler:

  • (\d) (\d) # İki basamak eşleştirin ve bunları 1. ve 2. gruplar halinde yakalayın

  • (\d+) # Bir veya daha fazla basamak eşleştirin ve hepsini grup 1'de yakalayın

  • (\d)+ # Bir rakamı bir veya daha fazla kez eşleştirin ve son rakamı grup 1'e yakalayın

Dekont

Desenin / ön ekine ve son ekine kullanımı, desende değerle eşleşecek şekilde belirtilmemelidir. Örneğin, (\d)(\d) iki basamakla eşleşir. /(\d)(\d)/ iki basamakla eşleşmiyor.

Yakalandıktan sonra, aşağıdaki biçimi kullanarak eylem kümesinde bunlara başvurabilirsiniz:

  • İstek üst bilgisi yakalama için {http_req_headerName_groupNumber} kullanmanız gerekir. Örneğin, {http_req_User-Agent_1} veya {http_req_User-Agent_2}
  • Yanıt üst bilgisi yakalama için {http_resp_headerName_groupNumber} kullanmanız gerekir. Örneğin, {http_resp_Location_1} veya {http_resp_Location_2}
  • Bir sunucu değişkeni için {var_serverVariableName_groupNumber} kullanmanız gerekir. Örneğin, {var_uri_path_1} veya {var_uri_path_2}

Dekont

Koşul değişkeninin büyük/küçük harf durumunun yakalama değişkeninin büyük/küçük harfle eşleşmesi gerekir. Örneğin, koşul değişkenim User-Agent ise, yakalama değişkenim User-Agent ({http_req_User-Agent_2}) için olmalıdır. Koşul değişkenim kullanıcı aracısı olarak tanımlanıyorsa, yakalama değişkenim kullanıcı aracısı ({http_req_user-agent_2}) için olmalıdır.

Değerin tamamını kullanmak istiyorsanız, sayıdan bahsetmemelisiniz. GroupNumber olmadan {http_req_headerName} vb. biçimini kullanmanız yeterlidir.

Sunucu değişkenleri

Application Gateway, sunucu, istemciyle bağlantı ve bağlantıdaki geçerli istek hakkında yararlı bilgileri depolamak için sunucu değişkenlerini kullanır. Depolanan bilgilere örnek olarak istemcinin IP adresi ve web tarayıcısı türü verilebilir. Sunucu değişkenleri, örneğin yeni bir sayfa yüklendiğinde veya form gönderildiğinde dinamik olarak değişir. Yeniden yazma koşullarını değerlendirmek ve üst bilgileri yeniden yazmak için bu değişkenleri kullanabilirsiniz. Üst bilgileri yeniden yazmak için sunucu değişkenlerinin değerini kullanmak için bu değişkenleri {var_serverVariableName} söz diziminde belirtmeniz gerekir

Application Gateway aşağıdaki sunucu değişkenlerini destekler:

Değişken adı Tanım
add_x_forwarded_for_proxy Ip1, IP2, IP3 vb. biçiminde değişkeninin client_ip eklendiği X-Forwarded-For istemci isteği üst bilgisi alanı (bu tablonun ilerleyen bölümlerindeki açıklamaya bakın). X-Forwarded-For alanı istemci isteği üst bilgisinde değilse, add_x_forwarded_for_proxy değişken değişkene $client_ip eşittir. Bu değişken özellikle Application Gateway tarafından ayarlanan X-Forwarded-For üst bilgisini yeniden yazmak istediğinizde kullanışlıdır; böylece üst bilgi yalnızca bağlantı noktası bilgisi olmayan IP adresini içerir.
ciphers_supported İstemci tarafından desteklenen şifrelemelerin listesi.
ciphers_used Yerleşik bir TLS bağlantısı için kullanılan şifre dizesi.
istemci_ip_adresi Uygulama ağ geçidinin isteği aldığı istemcinin IP adresi. Uygulama ağ geçidinden ve kaynak istemciden önce bir ters proxy varsa, client_ip ters proxy'nin IP adresini döndürür.
client_port İstemci bağlantı noktası.
client_tcp_rtt İstemci TCP bağlantısı hakkında bilgi. TCP_INFO yuva seçeneğini destekleyen sistemlerde kullanılabilir.
client_user HTTP kimlik doğrulaması kullanıldığında, kimlik doğrulaması için sağlanan kullanıcı adı.
host Bu öncelik sırasına göre: istek satırındaki ana bilgisayar adı, Konak isteği üst bilgi alanındaki konak adı veya istekle eşleşen sunucu adı. Örnek: İstekte http://contoso.com:8080/article.aspx?id=123&title=fabrikamkonak değeri şu şekilde olacaktır: contoso.com
cookie_adı Ad tanımlama bilgisi.
http_method URL isteğinde bulunmak için kullanılan yöntem. Örneğin, GET veya POST.
http_status Oturum durumu. Örneğin, 200, 400 veya 403.
http_version İstek protokolü. Genellikle HTTP/1.0, HTTP/1.1 veya HTTP/2.0.
query_string İstenen URL'deki "?" öğesini izleyen değişken/değer çiftlerinin listesi. Örnek: İstekte http://contoso.com:8080/article.aspx?id=123&title=fabrikamquery_string değer id=123&title=fabrikam
received_bytes İsteğin uzunluğu (istek satırı, üst bilgi ve istek gövdesi dahil).
request_query İstek satırındaki bağımsız değişkenler.
request_scheme İstek düzeni: http veya https.
request_uri Tam özgün istek URI'si (bağımsız değişkenlerle). Örnek: istekte http://contoso.com:8080/article.aspx?id=123&title=fabrikam*request_uri değer /article.aspx?id=123&title=fabrikam
sent_bytes İstemciye gönderilen bayt sayısı.
server_port İsteği kabul eden sunucunun bağlantı noktası.
ssl_connection_protocol Yerleşik bir TLS bağlantısının protokolü.
ssl_enabled Bağlantı TLS modunda çalıştırıldıysa "Açık". Aksi takdirde, boş bir dize.
uri_path Web istemcisinin erişmek istediği konaktaki belirli kaynağı tanımlar. Bu, bağımsız değişkenler olmadan istek URI'sinin bölümüdür. Örnek: İstekte http://contoso.com:8080/article.aspx?id=123&title=fabrikamuri_path değeri /article.aspx

Karşılıklı kimlik doğrulama sunucusu değişkenleri

Application Gateway, karşılıklı kimlik doğrulama senaryoları için aşağıdaki sunucu değişkenlerini destekler. Bu sunucu değişkenlerini diğer sunucu değişkenleriyle yukarıdaki gibi kullanın.

Değişken adı Tanım
client_certificate Kurulan SSL bağlantısı için PEM biçimindeki istemci sertifikası.
client_certificate_end_date İstemci sertifikasının bitiş tarihi.
client_certificate_fingerprint Kurulan SSL bağlantısı için istemci sertifikasının SHA1 parmak izi.
client_certificate_issuer Kurulan SSL bağlantısı için istemci sertifikasının "veren DN" dizesi.
client_certificate_serial Kurulan SSL bağlantısı için istemci sertifikasının seri numarası.
client_certificate_start_date İstemci sertifikasının başlangıç tarihi.
client_certificate_subject Kurulan SSL bağlantısı için istemci sertifikasının "konu DN" dizesi.
client_certificate_verification İstemci sertifikası doğrulamasının sonucu: BAŞARI, BAŞARISIZ:<neden> veya bir sertifika yoksa NONE.

Yapılandırmayı yeniden yazma

Yeniden yazma kuralı yapılandırmak için bir yeniden yazma kuralı kümesi oluşturmanız ve yeniden yazma kuralı yapılandırmasını buna eklemeniz gerekir.

Yeniden yazma kuralı kümesinde aşağıdakiler bulunur:

  • İstek yönlendirme kuralı ilişkilendirmesi: Yeniden yazma yapılandırması, yönlendirme kuralı aracılığıyla kaynak dinleyiciyle ilişkilendirilir. Temel bir yönlendirme kuralı kullandığınızda, yeniden yazma yapılandırması bir kaynak dinleyiciyle ilişkilendirilir ve genel üst bilgi yeniden yazma işlemidir. Yol tabanlı yönlendirme kuralı kullandığınızda, yeniden yazma yapılandırması URL yol haritasında tanımlanır. Bu durumda, yalnızca sitenin belirli yol alanına uygulanır. Birden çok yeniden yazma kümesi oluşturabilir ve her yeniden yazma kümesini birden çok dinleyiciye uygulayabilirsiniz. Ancak belirli bir dinleyiciye yalnızca bir yeniden yazma kümesi uygulayabilirsiniz.

  • Yeniden Yazma Koşulu: İsteğe bağlı bir yapılandırmadır. Yeniden yazma koşulları, HTTP(S) isteklerinin ve yanıtlarının içeriğini değerlendirir. HTTP(S) isteği veya yanıtı yeniden yazma koşuluyla eşleşirse yeniden yazma eylemi gerçekleşir. Birden fazla koşulu bir eylemle ilişkilendirirseniz, eylem yalnızca tüm koşullar karşılandığında gerçekleşir. Başka bir deyişle, işlem mantıksal bir AND işlemidir.

  • Yeniden yazma türü: 3 tür yeniden yazma kullanılabilir:

    • İstek üst bilgilerini yeniden yazma
    • Yanıt üst bilgilerini yeniden yazma
    • URL bileşenlerini yeniden yazma
      • URL yolu: Yolun yeniden yazılacağı değer.
      • URL Sorgu Dizesi: Sorgu dizesinin yeniden yazılacağı değerdir.
      • Yol eşlemesini yeniden değerlendirme: URL yol eşlemesinin yeniden değerlendirilip değerlendirilmeyeceğini belirlemek için kullanılır. İşaretsiz tutulursa, özgün URL yolu URL yolu eşlemesindeki yol deseni ile eşleşecek şekilde kullanılır. True olarak ayarlanırsa, URL yolu eşlemesi yeniden yazılan yolla eşleşmeyi denetlemek için yeniden değerlendirilir. Bu anahtarın etkinleştirilmesi, yeniden yazma sonrasında isteğin farklı bir arka uç havuzuna yönlendirilmesine yardımcı olur.

Yapılandırmada sık karşılaşılan tuzakları yeniden yazma

  • Temel istek yönlendirme kuralları için 'Yol eşlemesini yeniden değerlendir' özelliğini etkinleştirmeye izin verilmez. Bu, temel bir yönlendirme kuralı için sonsuz değerlendirme döngüsünü önlemektir.

  • Yol tabanlı yönlendirme kuralı için sonsuz değerlendirme döngüsünü önlemek için yol tabanlı yönlendirme kuralları için 'Yol eşlemesini yeniden değerlendir' özelliğinin etkinleştirilmediği en az 1 koşullu yeniden yazma kuralı veya 1 yeniden yazma kuralı olmalıdır.

  • İstemci girişlerine göre dinamik olarak bir döngü oluşturulması durumunda gelen istekler 500 hata koduyla sonlandırılır. Application Gateway, böyle bir senaryoda herhangi bir düşüş olmadan diğer isteklere hizmet etmeye devam edecektir.

WEB UYGULAMASı GÜVENLIK DUVARı (WAF_v2 SKU) ile URL yeniden yazma veya Konak üst bilgisi yeniden yazma kullanma

URL yeniden yazmayı veya ana bilgisayar üst bilgisini yeniden yazmayı yapılandırdığınızda, istek üst bilgisinde veya URL parametrelerinde yapılan değişiklik (yeniden yazma sonrası) sonrasında WAF değerlendirmesi gerçekleşir. Application Gateway'inizde URL yeniden yazma veya ana bilgisayar üst bilgisi yeniden yazma yapılandırmasını kaldırdığınızda, WAF değerlendirmesi üst bilgi yeniden yazmadan önce (yeniden yazma öncesi) yapılır. Bu sipariş, waf kurallarının arka uç havuzunuz tarafından alınacak son isteğe uygulanmasını sağlar.

Örneğin, üst bilgi için aşağıdaki üst bilgi "Accept" : "text/html" yeniden yazma kuralına sahip olduğunuzu varsayalım. Üst bilginin "Accept" değeri değerine eşitse "text/html"değerini "image/png"olarak yeniden yazın.

Burada, yalnızca üst bilgi yeniden yazma yapılandırıldığında WAF değerlendirmesi üzerinde "Accept" : "text/html"yapılır. Ancak URL yeniden yazmayı veya ana bilgisayar üst bilgisini yeniden yazmayı yapılandırdığınızda WAF değerlendirmesi üzerinde "Accept" : "image/png"yapılır.

Üst bilgi yeniden yazma için yaygın senaryolar

X-Forwarded-For üst bilgisinden bağlantı noktası bilgilerini kaldırma

Application Gateway, istekleri arka uca iletmeden önce tüm isteklere bir X-Forwarded-For üst bilgisi ekler. Bu üst bilgi, IP bağlantı noktalarının virgülle ayrılmış bir listesidir. Arka uç sunucularının yalnızca IP adreslerini içermesi için üst bilgilere ihtiyaç duyduğu senaryolar olabilir. Bağlantı noktası bilgilerini X-Forwarded-For üst bilgisinden kaldırmak için üst bilgi yeniden yazma özelliğini kullanabilirsiniz. Bunu yapmak için üst bilgiyi add_x_forwarded_for_proxy sunucu değişkenine ayarlamak gerekir. Alternatif olarak, client_ip değişkenini de kullanabilirsiniz:

Remove port

Yeniden yönlendirme URL'sini değiştirme

Yeniden yönlendirme URL'sinin değiştirilmesi belirli durumlarda yararlı olabilir. Örneğin: istemciler başlangıçta "/blog" gibi bir yola yönlendirildi, ancak içerik yapısındaki bir değişiklik nedeniyle şimdi "/updates" adresine gönderilmelidir.

Uyarı

Yeniden yönlendirme URL'sini değiştirme gereksinimi bazen Application Gateway'in ana bilgisayar adını arka uçtan geçersiz kılması için yapılandırıldığı bir yapılandırma bağlamında ortaya çıkar. Arka uç tarafından görülen ana bilgisayar adı, bu durumda tarayıcı tarafından görüldüğü gibi konak adından farklıdır. Bu durumda, yeniden yönlendirme doğru ana bilgisayar adını kullanmaz. Bu yapılandırma önerilmez.

Bu tür bir yapılandırmanın sınırlamaları ve etkileri, ters proxy ile arka uç web uygulaması arasında özgün HTTP ana bilgisayar adını koruma başlığında açıklanmıştır. App Service için önerilen kurulum, App Service'i Application Gateway ile Yapılandırma başlığındaki "Özel Etki Alanı (önerilen)" yönergelerini izlemektir. Aşağıdaki örnekte açıklandığı gibi yanıttaki konum üst bilgisinin yeniden yazılması geçici bir çözüm olarak kabul edilmelidir ve kök nedeni gidermez.

App Service bir yeniden yönlendirme yanıtı gönderdiğinde, yanıtının konum üst bilgisinde uygulama ağ geçidinden aldığı istekle aynı konak adını kullanır. Bu nedenle istemci, uygulama ağ geçidinden (contoso.com/path2) geçmek yerine doğrudan 'a contoso.azurewebsites.net/path2 istekte bulunacaktır. Uygulama ağ geçidinin atlanması istenmez.

Konum üst bilgisindeki konak adını uygulama ağ geçidinin etki alanı adına ayarlayarak bu sorunu çözebilirsiniz.

Konak adını değiştirme adımları şunlardır:

  1. Yanıttaki konum üst bilgisinin azurewebsites.net içerip içermediğini değerlendiren bir koşulla yeniden yazma kuralı oluşturun. desenini (https?):\/\/.*azurewebsites\.net(.*)$girin.
  2. Uygulama ağ geçidinin ana bilgisayar adına sahip olması için konum üst bilgisini yeniden yazmak için bir eylem gerçekleştirin. Üst bilgi değeri olarak girerek {http_resp_Location_1}://contoso.com{http_resp_Location_2} bunu yapın. Alternatif olarak, ana bilgisayar adını özgün istekle eşleşecek şekilde ayarlamak için sunucu değişkenini host de kullanabilirsiniz.

Modify location header

Güvenlik açıklarını önlemek için güvenlik HTTP üst bilgilerini uygulama

Uygulama yanıtında gerekli üst bilgileri uygulayarak çeşitli güvenlik açıklarını düzeltebilirsiniz. Bu güvenlik üst bilgileri arasında X-XSS-Protection, Strict-Transport-Security ve Content-Security-Policy bulunur. Application Gateway'i kullanarak tüm yanıtlar için bu üst bilgileri ayarlayabilirsiniz.

Security header

İstenmeyen üst bilgileri silme

HTTP yanıtından hassas bilgileri gösteren üst bilgileri kaldırmak isteyebilirsiniz. Örneğin, arka uç sunucu adı, işletim sistemi veya kitaplık ayrıntıları gibi bilgileri kaldırmak isteyebilirsiniz. Bu üst bilgileri kaldırmak için uygulama ağ geçidini kullanabilirsiniz:

Deleting header

Üst bilgi olup olmadığını denetleme

Üst bilgi veya sunucu değişkeninin varlığı için BIR HTTP isteğini veya yanıt üst bilgisini değerlendirebilirsiniz. Bu değerlendirme, yalnızca belirli bir üst bilgi mevcut olduğunda bir üst bilgi yeniden yazma işlemi gerçekleştirmek istediğinizde kullanışlıdır.

Checking presence of a header

URL yeniden yazma için yaygın senaryolar

Parametre tabanlı yol seçimi

İstekteki üst bilgi, URL'nin parçası veya sorgu dizesinin değerine göre arka uç havuzunu seçmek istediğiniz senaryoları gerçekleştirmek için, URL Yeniden Yazma özelliğinin ve yol tabanlı yönlendirmenin birleşimini kullanabilirsiniz. Örneğin, bir alışveriş web siteniz varsa ve ürün kategorisi URL'de sorgu dizesi olarak geçirilirse ve isteği sorgu dizesini temel alarak arka uçtan yönlendirmek istiyorsanız:

Adım1: Aşağıdaki resimde gösterildiği gibi bir yol haritası oluşturma

URL rewrite scenario 1-1.

2. Adım (a): 3 yeniden yazma kuralı içeren bir yeniden yazma kümesi oluşturun:

  • İlk kural, category=shoes için query_string değişkenini denetleen bir koşula sahiptir ve /listing1 url yolunu yeniden yazan ve Yol eşlemesini yeniden değerlendir özelliğini etkinleştiren bir eyleme sahiptir

  • İkinci kural, category=bags için query_string değişkenini denetleen bir koşula sahiptir ve /listing2 url yolunu yeniden yazan ve Yol eşlemesini yeniden değerlendir'i etkinleştiren bir eyleme sahiptir

  • Üçüncü kuralın category=accessories için query_string değişkenini denetlediği ve /listing3 URL yolunu yeniden yazan ve Yol eşlemesini yeniden değerlendir seçeneğinin etkinleştirildiği bir eylemi olan bir koşulu vardır

URL rewrite scenario 1-2.

2. Adım (b): Bu yeniden yazma kümesini yukarıdaki yol tabanlı kuralın varsayılan yolu ile ilişkilendirin

URL rewrite scenario 1-3.

Şimdi, kullanıcı contoso.com/listing?category=any isterse, yol eşlemesindeki yol desenlerinin hiçbiri (/listing1, /listing2, /listing3) eşleşmeyeceğinden varsayılan yol ile eşleştirilir. Yukarıdaki yeniden yazma kümesini bu yol ile ilişkilendirdiğinizden, bu yeniden yazma kümesi değerlendirilir. Sorgu dizesi bu yeniden yazma kümesindeki 3 yeniden yazma kuralının hiçbirindeki koşulla eşleşmediğinden, yeniden yazma eylemi gerçekleşmez ve bu nedenle istek, varsayılan yolla ilişkilendirilmiş arka uçta (GenericList olan) değiştirilmeden yönlendirilir.

Kullanıcı contoso.com/listing?category=shoes isterse, varsayılan yol yeniden eşleştirilir. Ancak, bu durumda ilk kuraldaki koşul eşleşecek ve bu nedenle koşulla ilişkilendirilmiş eylem yürütülür ve bu eylem /listing1 url yolunu yeniden yazar ve yol eşlemesini yeniden değerlendirir. Yol eşlemesi yeniden değerlendirildiğinde, istek artık /listing1 deseniyle ilişkilendirilmiş yol ile eşleşir ve istek bu desenle ilişkilendirilmiş olan ShoesListBackendPool olan arka uca yönlendirilir.

Dekont

Bu senaryo, tanımlanan koşullara göre herhangi bir üst bilgi veya tanımlama bilgisi değeri, URL yolu, sorgu dizesi veya sunucu değişkenlerine genişletilebilir ve temelde istekleri bu koşullara göre yönlendirmenizi sağlar.

SORGU dizesi parametrelerini URL'ye göre yeniden yazma

Kullanıcının görünür bağlantısının basit ve okunaklı olması, ancak arka uç sunucusunun doğru içeriği göstermek için sorgu dizesi parametrelerine ihtiyaç duyduğu bir alışveriş web sitesi senaryosu düşünün.

Bu durumda, Application Gateway URL'den parametreleri yakalayabilir ve URL'dekilerden sorgu dizesi anahtar-değer çiftleri ekleyebilir. Örneğin, kullanıcının öğesine yeniden yazmak https://www.contoso.com/fashion/shirtshttps://www.contoso.com/buy.aspx?category=fashion&product=shirtsistediğini varsayalım. Bu, aşağıdaki URL yeniden yazma yapılandırmasıyla elde edilebilir.

Koşul - Sunucu değişkeni uri_path desene eşitse /(.+)/(.+)

URL rewrite scenario 2-1.

Eylem - URL yolunu buy.aspx olarak ve sorgu dizesini olarak ayarlayın category={var_uri_path_1}&product={var_uri_path_2}

URL rewrite scenario 2-2.

Yukarıda açıklanan senaryoya ulaşmak için adım adım kılavuz için bkz . Azure portalını kullanarak Application Gateway ile URL'yi yeniden yazma

URL yeniden yazma ve URL yeniden yönlendirme karşılaştırması

Url yeniden yazma işlemi için Application Gateway, istek arka uçtan gönderilmeden önce URL'yi yeniden yazar. Değişiklikler kullanıcıdan gizlendiğinden bu, kullanıcıların tarayıcıda gördüklerini değiştirmez.

Url yeniden yönlendirmesi için Application Gateway, istemciye yeni URL ile bir yeniden yönlendirme yanıtı gönderir. Bu da istemcinin isteğini yeniden yönlendirmede sağlanan yeni URL'ye yeniden göndermesini gerektirir. Kullanıcının tarayıcıda gördüğü URL yeni URL'ye güncelleştirilir.

Rewrite vs Redirect.

Sınırlamalar

  • Yanıtta aynı ada sahip birden fazla üst bilgi varsa, bu üst bilgilerden birinin değerinin yeniden yazılması yanıttaki diğer üst bilgilerin düşmesine neden olur. Yanıtta birden fazla Set-Cookie üst bilginiz olabileceğinden bu durum genellikle Set-Cookie üst bilgisinde gerçekleşebilir. Bu tür senaryolardan biri, uygulama ağ geçidiyle bir uygulama hizmeti kullandığınızda ve uygulama ağ geçidinde tanımlama bilgisi tabanlı oturum bennizimini yapılandırdığınızdadır. Bu durumda yanıt iki Set-Cookie üst bilgisi içerir: biri uygulama hizmeti tarafından kullanılır, örneğin: Set-Cookie: ARRAffinity=ba127f1caf6ac822b2347cc18bba0364d699ca1ad44d20e0ec01ea80cda2a735;Path=/;HttpOnly;Domain=sitename.azurewebsites.net ve diğeri uygulama ağ geçidi benzimi için, örneğin, Set-Cookie: ApplicationGatewayAffinity=c1a2bd51lfd396387f96bl9cc3d2c516; Path=/. Bu senaryoda Set-Cookie üst bilgilerinden birinin yeniden yazılması, yanıttan diğer Set-Cookie üst bilgisinin kaldırılmasına neden olabilir.
  • Uygulama ağ geçidi istekleri yeniden yönlendirecek veya özel bir hata sayfası gösterecek şekilde yapılandırıldığında yeniden yazma işlemleri desteklenmez.
  • İstek üst bilgisi adları alfasayısal karakterler ve kısa çizgiler içerebilir. Arka uç hedefine bir istek gönderildiğinde, diğer karakterleri içeren üst bilgi adları atılır.
  • Yanıt üst bilgisi adları RFC 7230'da tanımlanan alfasayısal karakterleri ve belirli simgeleri içerebilir.
  • Bağlan ve yükseltme üst bilgileri yeniden yazılamaz
  • Yeniden yazma işlemleri doğrudan Application Gateway'den oluşturulan 4xx ve 5xx yanıtları için desteklenmez

Sonraki adımlar