Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Application Gateway, isteklerde ve yanıtlarda seçili içeriği yeniden yazmanıza olanak tanır. Bu özellik sayesinde URL'leri çevirebilir, dize parametrelerini sorgulayabilir, istek ve yanıt üst bilgilerini değiştirebilirsiniz. Url'nin veya belirtilen üst bilgilerin yalnızca belirli koşullar karşılandığında yeniden yazılmasını sağlamak için koşullar da ekleyebilirsiniz. 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 başlıkları
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 aşağıdakiler gibi önemli görevleri gerçekleştirebilirsiniz:
- HSTS ve X-XSS-Protection gibi güvenlikle ilgili üst bilgi alanları ekleme
- Hassas bilgileri ortaya çıkarabilecek yanıt üst bilgisi alanlarını kaldırma
- X-Forwarded-For başlıklarından port bilgilerini kaldırma
İstek ve yanıtlar içerisindeki tüm üst bilgileri, Connection ve Upgrade üst bilgileri dışında, 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 bir yönlendirme kuralı, koşulu ve eylemi 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şkilendirir ve genel bir yeniden yazma olarak işlev görür. Yol tabanlı yönlendirme kuralı kullandığınızda, URL yol eşlemesine göre yeniden yazma yapılandırmasını tanımlarsınız. İ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 yapılandırma isteğe bağlıdı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şiyorsa 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 (istek 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 istek üst bilgisinin değerini kullanmak için söz dizimini
{http_req_headerName}olarak belirtin. - Yanıt üst bilgisinin değeri - Önceki koşuldan yakalanan yanıt üst bilgisinin değerini kullanmak için söz dizimini
{http_resp_headerName}olarak 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 başlığı mevcut olduğunda belirli bir başlığın değerini eşleştirip yakalamanıza olanak tanır. Belirli bir tanımlama bilgisinin yakalanan değerini değiştirmek için ardından{capt_header_value_matcher}kullanabilirsiniz. Eylem kümesi altında yakalama hakkında daha fazla bilgi edinin. - Sunucu değişkeni - Bir sunucu değişkeni kullanmak için sözdizimini
{var_serverVariable}olarak belirtin. Desteklenen Sunucu değişkenlerinin listesi.
URL'yi yeniden yazmak için bir eylem kullandığınızda aşağıdaki işlemler desteklenir:
- URL yolu: Yol olarak ayarlanacağı 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. Bu seçeneği işaretlemezseniz, özgün URL yolu, URL yolu haritasındaki yol desenini eşleştirmek için kullanılır. Bu seçeneği true olarak ayarlarsanız, 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
Application Gateway, Koşul ve Eylem altında desen eşleştirmeyi ve yakalamayı destekler. Eylem altında, yalnızca belirli bir üst bilgi için desen eşleştirmeyi ve yakalamayı destekler.
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 kullanın.
Hem Koşul hem de Eylem altında desen eşleştirmeyi kullanabilirsiniz.
- Koşul: Üst Bilgi veya Sunucu Değişkeni değerleriyle eşleştirmek için bu ayarı kullanın. "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-Cookieiçin kullanılabilir. Bir eylem altında deseni eşleştirmek içinSet-CookieözelliğiniHeaderValueMatcherile kullanın. Yakalanırsa değeri olarak{capt_header_value_matcher}kullanılabilir. Birden çokSet-Cookieüst bilgi olabileceği için, burada desen eşleştirmesi yaparak belirli bir çerezi arayabilirsiniz. Örneğin, kullanıcı aracısının belirli bir sürümü içinset-cookieyanıt üst bilgisinicookie2konumundamax-age=3600(bir saat olarak) yeniden yazmak istiyorsunuz. Bu durumda, kullanabilirsiniz- 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ı: Set-Cookie, Ü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 daha önceki bir sürüme sahip bir Uygulama Geçidi Web Uygulama Güvenlik Duvarı (WAF) çalıştırıyorsanız, lookahead ve lookbehind (negatif veya pozitif) doğrulamalar yaparken Perl Uyumlu Normal İfadeler (PCRE) kullanırken sorunlarla karşılaşabilirsiniz.
Yakalama için söz dizimi
Bir alt dizeyi daha sonra kullanmak üzere yakalamak için desenleri kullanabilirsiniz. Regex tanımında bir alt desenin etrafına parantezler koyun. İlk parantez çifti eşleşen alt dizeyi 1'de, ikinci parantez çifti 2'de saklar; bu böyle devam eder. İstediğiniz kadar parantez kullanabilirsiniz. Perl, yakalanan bu dizeleri temsil etmek için daha fazla numaralandırılmış değişken tanımlar. Bu Perl programlama kılavuzunda bazı örnekler bulabilirsiniz.
- (\d)(\d) # İki rakamı eşleştirir ve bunları 1 ve 2 numaralı gruplarda yakalar
- (\d+) # Bir veya daha fazla rakamı eşleştirir, bunların tamamını 1. grupta yakalar
- (\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}. Buna karşılık, "HeaderValueMatcher" özelliği kullanılarak yakalanan bir Set-Cookie yanıt üst bilgisi 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
- Desende değeri eşleştirmek için / karakterinin önek veya sonek olarak kullanılmaması belirtilmelidir. Örneğin, (\d)(\d) iki basamakla eşleşir. /(\d)(\d)/ iki rakamla eşleşmez.
- 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 başlığı ekle |
client_ip değişkeninin (açıklaması bu tablonun ilerleyen kısımlarında verilmiştir) IP1, IP2, IP3 vb. biçiminde eklendiği X-Forwarded-For istemci isteği üst bilgi alanı. 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. |
| desteklenen şifreler | İstemci tarafından desteklenen şifrelemelerin listesi. |
| kullanılan şifreler | 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. |
| istemci_kullanıcı | HTTP kimlik doğrulaması kullanıldığında, kimlik doğrulaması için sağlanan kullanıcı adı. |
| ana bilgisayar | Şu öncelik sırasına göre: istek satırındaki ana bilgisayar adı, Host istek üst bilgisi alanındaki ana bilgisayar adı veya bir istekle eşleşen sunucu adı. Örnek: isteğinde http://contoso.com:8080/article.aspx?id=123&title=fabrikamkonak değeri şu şekildedir: contoso.com |
| cookie_adı | name 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ğeri id=123&title=fabrikam |
| alınan baytlar | İsteğin uzunluğu (istek satırı, üst bilgi ve istek gövdesi dahil). |
| request_query | İstek satırındaki parametreler. |
| istek_scheması | İstek düzeni: http veya https. |
| request_uri | Parametrelerle birlikte tam orijinal istek URI'si. Örnek: http://contoso.com:8080/article.aspx?id=123&title=fabrikam isteğinde request_uri değeri /article.aspx?id=123&title=fabrikam değeridir |
| Gönderilen bayt (sent_bytes) | İstemciye gönderilen bayt sayısı. |
| sunucu_portu | İsteği kabul eden sunucunun bağlantı noktası. |
| ssl_bağlantı_protokolü | Yerleşik bir TLS bağlantısının protokolü. |
| SSL etkinleştirildi | 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şkeni, herhangi bir düzenlemeden önce özgün URL yoluna başvurur. Bu, argümanları içermeyen istek URI’sinin kısmıdır. Örneğin, http://contoso.com:8080/article.aspx?id=123&title=fabrikam isteğinde uri_path değeri /article.aspx şeklindedir. |
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şkenleri gibi kullanın.
| Değişken adı | Açıklama |
|---|---|
| istemci sertifikası | Kurulan SSL bağlantısı için PEM biçimindeki istemci sertifikası. |
| istemci_sertifikası_bitiş_tarihi | İstemci sertifikasının bitiş tarihi. |
| istemci_sertifikası_parmak_izi | Kurulan SSL bağlantısı için istemci sertifikasının SHA1 parmak izi. |
| istemci sertifikası düzenleyeni | Kurulan SSL bağlantısı için istemci sertifikasının "veren DN" dizesi. |
| istemci_sertifika_serisi | Kurulan SSL bağlantısı için istemci sertifikasının seri numarası. |
| müşteri_sertifikası_başlangıç_tarihi | İstemci sertifikasının başlangıç tarihi. |
| istemci_sertifikası_konu | Kurulan SSL bağlantısı için istemci sertifikasının "konu DN" dizesi. |
| istemci_sertifika_doğrulaması | İstemci sertifikası doğrulamasının sonucu: BAŞARI, BAŞARISIZ:<neden> veya bir sertifika yoksa YOK. |
Üst bilgi yeniden yazımı için yaygın kullanım 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 başlıklarda IP adreslerinin bulunmasına 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 yapmanın bir yolu, üstbilgiyi add_x_forwarded_for_proxy sunucu değişkeni olarak ayarlamaktır. Alternatif olarak, client_ip değişkenini de kullanabilirsiniz:
Arka plan güvenlik duvarının X-Forwarded-For kaynak özelliğiyle kullanmak üzere doğrudan vekil sunucu IP'sini kaldırın.
Ağ Sanal Gereçleri (NVA) olarak bilinen bazı üçüncü taraf güvenlik duvarları, paketin kaynak IP adresini yansıtmak yerine gelen X-Forwarded-For başlığını kullanarak kaynak IP adresini belirler. Normalde, bu durum Application Gateway'in IP adresinin yansıtılmasına neden olur. Çoğu durumda NVA'lar yalnızca üst bilgideki en son IP adresini görüntüler.
bir istek birden çok proxy'den (örneğin, İstemci - Azure Front Door ->> Application Gateway -> NVA) geçtiğinde, üst bilgideki X-Forwarded-For en son IP adresi özgün istemci IP adresi yerine Azure Front Door'u temsil edebilir. İstemci IP adresini korumak için bir Application Gateway yeniden yazma kuralı yapılandırarak üst bilgiyi sunucu değişkenine X-Forwarded-For ayarlayabilirsinizhttp_req_X-Forwarded-For. Bu yapılandırma, aşağıdaki ekran görüntüsünde gösterildiği gibi Application Gateway'in Azure Front Door'un veya diğer ara ters proxy'lerin IP adresini eklemesini engeller:
Bu, istemcinin özgün IP adresi olacak gelen X-Forwarded-For üst bilgisini yakalar ve AFD veya proxy IP'sini üst bilgiye eklemek yerine olduğu gibi iletir, böylece NVA'nın özgün istemci IP'sini görüntülemesine ve değerlendirmesine olanak sağlar.
Yeniden yönlendirme URL'sini değiştirme
Yeniden yönlendirme URL'sini değiştirmek belirli durumlarda yararlı olabilir. Örneğin, başlangıçta istemcileri "/blog" gibi bir yola yönlendirebilirsiniz, ancak artık içerik yapısındaki bir değişiklik nedeniyle onları "/updates" adresine göndermek isteyebilirsiniz.
Uyarı
Uygulama Ağ Geçidi'ni arka uçtaki ana bilgisayar adını geçersiz kılacak şekilde yapılandırdığınızda, yeniden yönlendirme URL'sini değiştirmeniz gerekebilir. Bu yapılandırmada, arka plan tarayıcıdan farklı bir konak adı görür. Yeniden yönlendirme doğru ana bilgisayar adını kullanmıyor. Bu yapılandırma önerilmez.
Bu tür bir yapılandırmanın sınırlamaları ve etkileri hakkında daha fazla bilgi için bkz. Ters ara sunucu ile arka uç web uygulaması arasında özgün HTTP ana bilgisayar adını koruma. App Service için önerilen kurulum için App Service'i Application Gateway ile yapılandırma başlığındaki "Özel Etki Alanı (önerilen)" bölümüne bakın. Yanıttaki konum üst bilgisinin aşağıdaki örnekte açıklandığı gibi yeniden yazılması geçici bir çözüm olarak değerlendirilmelidir ve kök nedeni gidermez.
App Service bir yeniden yönlendirme yanıtı gönderdiğinde, yanıtındaki Location üst bilgisinde, Application Gateway'den aldığı istektekiyle aynı ana bilgisayar adını kullanır. Bu nedenle istemci, uygulama ağ geçidinden (contoso.azurewebsites.net/path2) geçmek yerine doğrudan 'a contoso.com/path2 istekte bulunur. Uygulama ağ geçidinin atlanması tercih edilen bir şey değildir.
Konum üst bilgisindeki konak adını uygulama ağ geçidinin etki alanı adına ayarlayarak bu sorunu çözebilirsiniz.
Ana bilgisayar adını değiştirme adımları aşağıdadır:
Yanıttaki konum üst bilgisinin azurewebsites.net içerip içermediğini denetleen bir koşulla yeniden yazma kuralı oluşturun. '(https?):// desenini girin. azurewebsites.net(.).
Location üst bilgisini, uygulama ağ geçidinin ana bilgisayar adını içerecek şekilde yeniden yazmak için bir işlem gerçekleştirin. Başlık değeri olarak
{http_resp_Location_1}://contoso.com{http_resp_Location_2}girin. Alternatif olarak, ana bilgisayar adını özgün istekle eşleşecek şekilde ayarlamak için sunucu değişkeninihostde 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 silin
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şturamazsınız. Eylem türü silme olarak ve üstbilgi Host olarak ayarlanmış bir yeniden yazma kuralı oluşturmaya çalışırsanız, bu bir hataya neden olur.
Üst bilgi olup olmadığını denetleyin
Bir üst bilginin veya sunucu değişkeninin varlığını belirlemek için bir HTTP istek ya da yanıt üst bilgisini değerlendirebilirsiniz. Bu değerlendirme, yalnızca belirli bir üst bilgi mevcutsa üst bilgiyi yeniden yazmak 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 kullanın.
Belirli bir parametreyi (sorgu dizesi, üst bilgi vb.) denetleyan ve url yolunu değiştirdiği bir eylem gerçekleştiren bir koşulla yeniden yazma kümesi oluşturun ( Yol eşlemesini yeniden değerlendir'in etkinleştirildiğinden emin olun). Yeniden yazma kümesini yol tabanlı bir kuralla ilişkilendirin. 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 belirli bir parametreyi denetlemenize ve yeni bir yol atamanıza olanak tanır ve yol tabanlı kural bu yollara arka uç havuzları atamanızı sağlar. "Yol haritasını yeniden değerlendir" etkin olduğu sürece, yeniden yazma kümesinde belirtilen yola göre trafik güzergahları belirlenir.
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ı tarafından görünen bağlantının basit ve okunaklı olduğu 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'deki parametreleri yakalayabilir ve URL'deki bu parametrelerden sorgu dizesi anahtar-değer çiftleri ekleyebilir. Örneğin, kullanıcı https://www.contoso.com/fashion/shirts’u https://www.contoso.com/buy.aspx?category=fashion&product=shirts olarak yeniden yazmak istiyorsa, bu hedefe aşağıdaki URL yeniden yazma yapılandırması ile ulaşabilirsiniz.
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}
Daha önce 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'i etkinleştiremezsiniz. Bu kısıtlama, temel yönlendirme kuralı için sonsuz bir değerlendirme döngüsünü engeller.
Yol tabanlı yönlendirme kuralları için en az bir koşullu yeniden yazma kuralına veya 'Yol eşlemesini yeniden değerlendir' etkinleştirilmeden bir yeniden yazma kuralına ihtiyacınız vardır. Bu gereksinim, yol tabanlı yönlendirme kuralı için sonsuz bir değerlendirme döngüsünü engeller.
İstemci girişleri temelinde dinamik olarak bir döngü oluşturulursa, gelen istekler 500 hata koduyla sonlandırılır. Application Gateway, bu 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 Host üst bilgisini yeniden yazma kullanımı
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 (yeniden yazma öncesi) gerçekleşir. Bu sipariş, WAF kurallarının arka uç havuzunuzun aldığı son istek için geçerli olmasını sağlar.
Örneğin, "Accept" : "text/html" üst bilgisi için aşağıdaki yeniden yazma kuralına sahip olduğunuzu varsayalım - eğer "Accept" üst bilgisinin değeri "text/html" değerine eşitse, değeri "image/png" olarak yeniden yazın.
Yalnızca üst bilgi yeniden yazma yapılandırıldığında "Accept" : "text/html" üzerinde WAF değerlendirmesi gerçekleşir. Ancak URL yeniden yazmayı veya ana bilgisayar üst bilgisini yeniden yazmayı yapılandırdığınızda, WAF değerlendirmesi "Accept" : "image/png" üzerinde gerçekleşir.
URL yeniden yazma ve URL yeniden yönlendirme karşılaştırması
Url yeniden yazma için Application Gateway, isteği arka uçtan göndermeden önce URL'yi yeniden yazar. Değişiklikler kullanıcıdan gizlendiğinden, bu eylem 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 yanıt, istemcinin isteğini yeniden yönlendirmede sağlanan yeni URL'ye 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.
-
X-Original-Host,Connectionveupgradeüst bilgilerini yeniden yazamazsınız. - Yeniden yazma işlemleri doğrudan Application Gateway'den oluşturulan 4xx ve 5xx yanıtları için desteklenmez.