İstemcinin ülkesine / şehrine göre farklı backend'e yönlendirebilir miyim?
Kısa cevap
Evet. Source IP condition'ında Source IP Type = Country seçilip ülke belirlenir ve condition Conditional Backend Services bloğuna bağlanır; ülke IPv4 ve IPv6 adreslerinde tespit edilir. Şehir bazında yönlendirme City tipiyle yapılır ve yalnızca Türkiye'nin 81 ili ile IPv4 adresleri için çalışır; servis sağlayıcıya göre ayrım için ASN tipi kullanılır. Her condition tek ülke, tek il ya da tek ASN seçer; aynı hedefe gidecek birden fazla değer için ayrı condition'lar blokta OR ile birleştirilir. Kullanıcıyı bölgesel bir alan adına göndermek için Location Redirection kullanılır.
Sorun: İçerik ya da Altyapı Bölgeye Göre Ayrılmış
Bölgesel kampanyalar, yerel mevzuat ya da coğrafi olarak dağıtılmış sunucular nedeniyle kullanıcıların bulundukları ülke ya da şehre göre farklı sunuculara gönderilmesi gerekebilir. İstemcinin konumu yalnızca IP adresinden, bir coğrafi IP veritabanı aracılığıyla anlaşılır.
Çözüm: Üç Yöntem
Yöntem 1 ve Yöntem 2 aynı yapılandırmayı (Source IP condition'ı + koşullu blok) arayüzden ya da komut satırından kurar; Yöntem 3 sunucu seçmez, istemciyi başka bir adrese yönlendirir.
| Durumunuz | Uygun yöntem |
|---|---|
| Ülkeye, Türkiye içinde ile ya da servis sağlayıcıya (ASN) göre farklı Kurum Servislerine göndermek istiyorum | Yöntem 1: Source IP condition'ı + Conditional Backend Services |
| Aynı yapılandırmayı komut satırından yapmak istiyorum | Yöntem 2: WEB-CLI |
Kullanıcıyı bölgesel alan adına (ör. de.example.com) göndermek istiyorum | Yöntem 3: Location redirection |
| TR7'nin önünde CDN ya da proxy var | Önce vService'e bir Trusted Proxies profili atanır → TR7'nin önünde Cloudflare / Akamai gibi bir CDN var; gerçek istemci IP'sini nasıl alırım (Trusted Proxy)? |
Yöntem 1: Source IP Condition'ı + Conditional Backend Services Önerilen
- Nasıl çalışır İstemci IP'si coğrafi IP veritabanında aranır; condition'a uyan istek bloğun Kurum Servislerine, diğerleri sonraki bloklara ya da Default Backend Services'e gider.
- Nerede açılırLoad Balancer → Conditions · vService formu → + Conditional backend services
- Gereksinim Hedef sunucuların Kurum Servisi olarak tanımlı olması
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Bölgesel sunucular TR7'de henüz Kurum Servisi olarak tanımlı değilse önce eklenir; tanımlıysa bu adım atlanır. Load Balancer → Backend Services → Add ile her sunucu için Backend Service Name ve Address girilir ve bir Health Check profili seçilir. Ayrıntı: Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?
Load Balancer → Conditions → Add adımları izlenir; form Conditions · Nasıl eklenir? bölümünde anlatılır.
Condition Name girilir, Criteria = Source IP seçilir ve Source IP Type alanında ayrım biçimi seçilir:
| Source IP Type | Seçim | Kapsam |
|---|---|---|
| Country | Listeden bir ülke; varsayılan değer Türkiye | IPv4 ve IPv6 |
| City | Listeden bir il; varsayılan değer Ankara; yalnızca Türkiye'nin 81 ili | Yalnızca IPv4 |
| ASN | Aranabilir listeden ASN numarası, AS öneki olmadan (ör. 16509) | IPv4 ve IPv6 |
Add butonuna tıklanır. Aynı hedefe gidecek her ülke, il ya da ASN için 2–4. adımlar tekrarlanır.
Load Balancer → Load Balancer vService List adımları izlenir ve vService açılır.
Default Backend Services tablosundaki + Conditional backend services butonuna tıklanır (Conditional Backend Services).
Bloğun Select Conditions alanında condition seçilir; aynı hedefe gidecek ülkelerin condition'ları gruptaki AND / OR anahtarı OR yapılarak birlikte seçilir. Kurum Servisi seçicisinde bölgesel Kurum Servisleri seçilir. Farklı hedefler için ayrı bloklar eklenir.
Save butonuna tıklanır.
Doğrulama
Left Monitor Panel → Load Balancer vServices → vService → Logs & Tracking → HTTP Logs ekranında isteğin Location (istemcinin coğrafi konumu) değeri ile isteği yanıtlayan Kurum Servisi karşılaştırılır (HTTP Loglarını Görüntüleme). Kayıt için vService'te LOG alanı açık olmalıdır. L7 TCP vService'te HTTP Logs bulunmaz; bağlantının gittiği Kurum Servisi vService Sessions ekranındaki Backend Name kolonundan, istemci adresiyle (Source IP) birlikte izlenir (vService Sessions Listeleme Ekranı).
Seçilen ülkeden gelen istek → bölgesel Kurum ServisiYöntem 2: WEB-CLI
- Nasıl çalışır Source IP condition'ı ve koşullu blok komut satırından tanımlanır; sonuç Yöntem 1 ile aynıdır.
- Nerede açılır TR7 WEB-CLI →
lb condition·lb service - Gereksinim WEB-CLI erişimi; hedef Kurum Servislerinin tanımlı olması
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Ülke için iki harfli ülke kodu, il için plaka kodu, ASN için numara yazılır:
lb condition add criteria src_ip srcIpType country country DE --name almanya
lb condition add criteria src_ip srcIpType city city 34 --name istanbul
lb condition add criteria src_ip srcIpType asn asn 16509 --name aws-asnlb condition listÇıktıda condition'ın kimliği (lbConditions- ile başlayan değer) alınır; blok condition'ı adıyla değil bu kimlikle tanır.
lb service show <vService>dynamicBackendList listesindeki blok sayısı görülür; yeni blok için ilk boş sıra numarası kullanılır (hiç blok yoksa 0). Dolu bir sıra numarası yazılırsa o sıradaki blok değiştirilir.
vService'te henüz koşullu blok olmadığı durum için (sıra 0); iki ülkenin condition'ı or ile birleştirilir:
lb service update id <vService> --dynamicBackendList.0.cond "<koşul-kimliği-1> or <koşul-kimliği-2>" --dynamicBackendList.0.beList.0 <backend-service>Tek condition için tırnak içine yalnızca o condition'ın kimliği yazılır. <backend-service> yerine Kurum Servisinin ya da Backend Group'un adı yazılır.
Doğrulama
vService yeniden görüntülenir; yönlendirme Yöntem 1'in doğrulama kartıyla denetlenir.
lb service show <vService>dynamicBackendList içinde yeni blokYöntem 3: Location Redirection
- Nasıl çalışır Condition'a uyan istek bölgesel bir adrese (ör.
https://de.example.com) 3xx ile yönlendirilir; bu bir sunucu seçimi değildir, istemci yeni adrese yeniden istek gönderir. Ayrıntı: Belirli bir URL'yi başka bir URL'ye 301/302 ile nasıl yönlendiririm? - Nerede açılırLoad Balancer → Actions · vService formu → Details → Actions
- Gereksinim Bir condition (Location redirection condition'sız kaydedilirse hiç çalışmaz)
- vService tipi HTTP
Adım adım yapılandırma
Yönlendirilecek ülkeyi tanımlayan Source IP condition'ı yoksa Yöntem 1'in 2–4. adımlarıyla oluşturulur.
Load Balancer → Actions → Add adımları izlenir.
Action Type = Location redirection seçilir; Redirect Location alanına bölgesel adres, Redirect Code alanında yönlendirme kodu (ör. geçici yönlendirme için 302) girilir ve Conditions alanında Source IP condition'ı seçilir.
Add butonuna tıklanır.
Load Balancer → Load Balancer vService List adımları izlenip vService açılır ve formun üstündeki Details butonuna tıklanır.
Actions alanında oluşturulan action seçilir.
Save butonuna tıklanır.
Doğrulama
Seçilen ülkedeki bir istemciden istek gönderilip yanıt başlıklarına bakılır.
curl -sI https://www.example.com/HTTP/1.1 302 · Location: https://de.example.comSık Yapılan Hatalar
- TR7 bir CDN ya da proxy arkasındayken Trusted Proxies profili atamamak. Bu durumda condition proxy'nin IP adresine göre değerlendirilir. HTTP vService'e Trusted Proxy Profile atandığında condition'lar dahil bütün bileşenler çözülmüş gerçek istemci IP'sini kullanır (Çözülen adresi kullanan bileşenler).
- Yurt dışı şehirler için City kullanmak. City yalnızca Türkiye illerini ve IPv4 adreslerini tanır; diğer ülkeler için Country kullanılır.
- Coğrafi veriyi güncel tutmamak. Ülke, il ve ASN verileri Settings → General Settings → System Update ekranındaki IP DB bileşeniyle güncellenir (Bileşen satırları).
- Konumun her zaman doğru olduğunu varsaymak. VPN ve bazı mobil operatör kullanıcılarında konum, kullanıcının bulunduğu yerden farklı görünebilir; erişim kısıtı için tek başına kullanılmaz.
- WEB-CLI'da condition'ı adıyla bağlamak.
--dynamicBackendList.N.condcondition kimliğini bekler.
Dokümantasyonda nasıl yapılır
