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.
HTTP üst bilgisi ve URL yeniden yazma özellikleri yalnızca Application Gateway v2 SKU'su için kullanılabilir.
İstek ve yanıt üst bilgileri
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. 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.
İsteklerde ve yanıtlarda , ve Upgrade
üst bilgileri dışında Connection
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. Azure portalını kullanarak Application Gateway ile istek ve yanıt üst bilgilerini yeniden yazmayı öğrenmek için buraya bakın.
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.
Application Gateway'de Yeniden Yazmaları Anlama
Yeniden yazma kümesi, Yönlendirme Kuralı, Koşul ve Eylem koleksiyonudur.
İstek yönlendirme kuralı ilişkilendirmesi: Yeniden yazma yapılandırması, yönlendirme kuralı aracılığıyla bir kaynak dinleyiciyle ilişkilendirilir. Temel türünde bir yönlendirme kuralı kullandığınızda, yeniden yazma yapılandırması dinleyicisiyle ilişkilendirilir ve genel yeniden yazma olarak çalışır. Yol tabanlı yönlendirme kuralı kullandığınızda, yeniden yazma yapılandırması URL yol haritasına göre tanımlanır. İkinci durumda, yalnızca sitenin belirli bir yol alanına uygulanır. Yeniden yazma kümesini birden çok yönlendirme kuralına uygulayabilirsiniz, ancak bir yönlendirme kuralıyla ilişkilendirilmiş yalnızca bir yeniden yazma olabilir.
Yeniden Yazma Koşulu: Bu isteğe bağlı bir yapılandırmadır. Application Gateway, tanımladığınız koşullara bağlı olarak HTTP(S) isteklerinin ve yanıtlarının içeriğini değerlendirir. SONRAKI "yeniden yazma eylemi", HTTP(S) isteği veya yanıtı bu koşulla eşleşirse 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, mantıksal bir AND işlemidir. HTTP(S) isteklerinin ve yanıtlarının içeriğini değerlendirmek için yeniden yazma koşullarını kullanabilirsiniz. Bu isteğe bağlı yapılandırma, yeniden yazma işlemini yalnızca bir veya daha fazla koşul karşılandığında gerçekleştirmenizi sağlar. Uygulama ağ geçidi, isteklerin ve yanıtların içeriğini değerlendirmek için şu tür değişkenleri kullanır:
Koşul aramak için aşağıdaki türleri seçebilirsiniz:
- HTTP üst bilgisi (İstek ve Yanıt)
- Desteklenen Sunucu değişkenleri
Koşul, değerleri metin veya Regex deseni ile eşleştirerek belirtilen üst bilgi veya değişkenin var olup olmadığını değerlendirmenize olanak tanır. Gelişmiş yeniden yazma yapılandırmaları için, Yeniden Yazma Eylemi altında daha sonra kullanmak üzere üst bilgi veya sunucu değişkeninin değerini de yakalayabilirsiniz. Desen ve yakalama hakkında daha fazla bilgi edinin.
Yeniden Yazma Eylemi: Yeniden yazma eylem kümesi, Üst Bilgileri (İstek veya Yanıt) veya URL bileşenlerini yeniden yazmanızı sağlar.
Bir eylem aşağıdaki değer türlerine veya bunların birleşimlerine sahip olabilir:
- Metin.
- İstek üst bilgisinin değeri - Yakalanan bir İstek üst bilgisinin değerini kullanmak için söz dizimini olarak
{http_req_headerName}
belirtin. - Yanıt üst bilgisinin değeri - Önceki Koşuldan yakalanan bir Yanıt üst bilgisinin değerini kullanmak için söz dizimini olarak
{http_resp_headerName}
belirtin. Yeniden Yazma Eylemi bloğu, Set-Cookie üst bilgisi için "Üst Bilgi Değer Eşleştiricisi" alanını da destekler. Bu isteğe bağlı alan, aynı ada sahip birden çok Set-Cookie üst bilgisi mevcut olduğunda belirli bir üst bilginin değerini yakalamanın yanı sıra eşleşmenize de olanak tanır. Belirli bir tanımlama bilgisinin yakalanan değerini değiştirmek için kullanabilirsiniz{capt_header_value_matcher}
. Eylem kümesi altında yakalama hakkında daha fazla bilgi edinin. - Sunucu değişkeni - Sunucu değişkeni kullanmak için söz dizimini olarak
{var_serverVariable}
belirtin. Desteklenen Sunucu değişkenlerinin listesi.
Not
{capt_header_value_matcher} Üst Bilgi Değer Eşleştiricisi alanının kullanımı şu anda Portal aracılığıyla desteklenmiyor. Bu nedenle, bu alanı kullanıyorsanız herhangi bir PUT işlemi için portal dışı bir yöntem kullanmaya devam etmeniz gerekir.
Url'yi yeniden yazmak için Eylem kullanılırken aşağıdaki işlemler desteklenir:
- URL yolu: Yol olarak ayarlanacak yeni değer.
- URL Sorgu Dizesi: Sorgu dizesinin yeniden yazılması gereken yeni değer.
- Yol eşlemesini yeniden değerlendir: Url yol eşlemesinin yeniden yazıldıktan sonra yeniden değerlendirilmesinin gerekip gerekmediğini belirtin. İş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.
Desen eşleştirme ve yakalama
Patten eşleştirme ve yakalama, Koşul ve Eylem altında desteklenir (Eylem altında, yalnızca belirli bir üst bilgi için desteklenir).
Desen eşleştirme
Application Gateway, desen eşleştirme için normal ifadeler kullanır. Desen eşleştirme söz diziminizi yazarken Normal İfade 2 (RE2) uyumlu ifadeler kullanmalısınız.
Hem Koşul hem de Eylem altında desen eşleştirmeyi kullanabilirsiniz.
- Koşul: Bu, Üst Bilgi veya Sunucu Değişkeni değerleriyle eşleştirmek için kullanılır. "Koşullar" altındaki bir deseni eşleştirmek için "pattern" özelliğini kullanın.
- Eylem: Eylem Kümesi altındaki desen eşleştirme yalnızca Yanıt üst bilgisi "Set-Cookie" için kullanılabilir. Eylem altındaki Set-Cookie desenini eşleştirmek için "HeaderValueMatcher" özelliğini kullanın. Yakalanırsa değeri {capt_header_value_matcher} olarak kullanılabilir. Birden çok Set-Cookie olabileceği için, burada eşleşen bir desen, belirli bir tanımlama bilgisini aramanızı sağlar. Örnek: Kullanıcı aracısının belirli bir sürümü için , "cookie2" için set-cookie yanıt üst bilgisini max-age=3600 (bir saat) ile yeniden yazmak istiyorsunuz. Bu durumda,
- Koşul - Tür: İstek üst bilgisi, Üst bilgi adı: kullanıcı aracısı, Eşleşecek desen: *2.0
- Eylem - Yeniden yazma türü: Yanıt üst bilgisi, Eylem türü: Ayarla, Üst Bilgi adı: Ayar-Tanımlama Bilgisi, Üst Bilgi Değer Eşleştiricisi: cookie2=(.*), Üst bilgi değeri: cookie2={capt_header_value_matcher_1}; Max-Age=3600
Not
Ç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 söz dizimi
Desenler, daha sonra kullanmak üzere bir alt dize yakalamak için de kullanılabilir. Regex tanımında bir alt desenin etrafına parantezler koyun. İ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. Bu Perl programlama kılavuzunda bazı örnekler bulabilirsiniz.
- (\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
Yakalandıktan sonra, bunları aşağıdaki biçimi kullanarak Eylem Kümesi değerinde kullanabilirsiniz:
- İ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}. Yanıt üst bilgisi için "HeaderValueMatcher" özelliği aracılığıyla yakalanan Set-Cookie için {capt_header_value_matcher_groupNumber} kullanmanız gerekir. Örneğin, {capt_header_value_matcher_1} veya {capt_header_value_matcher_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}
Not
- Desenin ön ekine ve son ekine / kullanılması, desende değerle eşleşecek şekilde belirtilmemelidir. Örneğin, (\d)(\d) iki basamakla eşleşir. /(\d)(\d)/ iki basamakla eşleşmiyor.
- 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ı | Açıklama |
---|---|
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, 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 ara sunucu 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: isteğinde http://contoso.com:8080/article.aspx?id=123&title=fabrikam konak değeri şu şekildedir: 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=fabrikam query_string değeri 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: isteğinde http://contoso.com:8080/article.aspx?id=123&title=fabrikam* request_uri değeri /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. Değişken, herhangi bir düzenlemeden önce özgün URL yoluna başvurur. Bu, bağımsız değişkenler olmadan istek URI'sinin bölümüdür. Örneğin, isteğinde http://contoso.com:8080/article.aspx?id=123&title=fabrikam uri_path değeri şeklindedir /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ı | Açıklama |
---|---|
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. |
Ü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:
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 bulunur. 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:
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.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şkeninihost
de kullanabilirsiniz.
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.
İ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:
Konak üst bilgisini silmek için yeniden yazma kuralı oluşturulamaz. Eylem türü silinecek ve üst bilgi konak olarak ayarlanmış bir yeniden yazma kuralı oluşturmaya çalışırsanız, hatayla sonuçlanır.
Ü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.
URL yeniden yazma için yaygın senaryolar
Parametre tabanlı yol seçimi
Üst bilgi, URL'nin parçası veya istekteki 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 bir bileşimini kullanabilirsiniz.
Bunu yapmak için, belirli bir parametreyi (sorgu dizesi, üst bilgi vb.) denetleyen bir koşulla yeniden yazma kümesi oluşturun ve ardından URL yolunu değiştirdiği bir eylem gerçekleştirir (Yol eşlemesini yeniden değerlendir'in etkinleştirildiğinden emin olun). Yeniden yazma kümesi daha sonra yol tabanlı bir kuralla ilişkilendirilmelidir. Yol tabanlı kural, yeniden yazma kümesinde belirtilen URL yollarını ve karşılık gelen arka uç havuzunu içermelidir.
Bu nedenle, yeniden yazma kümesi kullanıcıların belirli bir parametreyi denetlemesine ve yeni bir yol atamasına olanak tanır ve yol tabanlı kural kullanıcıların bu yollara arka uç havuzları atamasına olanak tanır. "Yol eşlemesini yeniden değerlendir" etkinleştirildiği sürece, trafik yeniden yazma kümesinde belirtilen yola göre yönlendirilir.
Sorgu dizelerini kullanan bir kullanım örneği için bkz . Portalda parametre tabanlı yol seçimini kullanarak trafiği yönlendirme.
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/shirts
https://www.contoso.com/buy.aspx?category=fashion&product=shirts
istediğ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 /(.+)/(.+)
Eylem - URL yolunu buy.aspx
olarak ve sorgu dizesini olarak ayarlayın category={var_uri_path_1}&product={var_uri_path_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
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 eder.
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, WAF değerlendirmesi istek üst bilgisinde veya URL parametrelerinde yapılan değişikliklerden sonra (yeniden yazma sonrası) 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 yapılır (yeniden yazma öncesi). 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.
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.
Sınırlamalar
- 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ğlantı 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