Aynı IP:port üzerinde birden fazla vService tanımlayabilir miyim?
Kısa cevap
Evet, HTTP vService'lerde Virtual Hosting ile. Aynı IP:port'u paylaşacak her vService'te Virtual hosting açılır ve o vService'e ait alan adları yazılır; TR7 isteği şifresiz trafikte Host başlığına, HTTPS'te SNI'ye bakarak doğru vService'e gönderir. Paylaşımın çalışması için vService'lerin hepsinde Virtual hosting listesi dolu olmalı ve hepsinin frontend'i aynı şifreleme sınıfında (hepsi HTTPS ya da hepsi şifresiz) olmalıdır. Virtual hosting olmadan aynı IP:port ikinci bir vService'te kullanılamaz.
Sorun: Aynı Adreste Neden Birden Fazla Site Gerekir?
Genel IP adresleri sınırlıdır; çoğu kurum birçok siteyi tek bir genel IP'nin 443 portundan yayınlar. Her sitenin kendi Kurum Servisleri, kuralları ve güvenlik ayarları olması gerekir. Aynı IP:port'u iki vService'e vermek normalde çakışmaya (Port collision) yol açar; TR7'nin gelen isteğin hangi siteye ait olduğunu anlaması gerekir.
Çözüm
Virtual hosting ile adresi paylaşmak
- Nasıl çalışır Ortak IP:port'a gelen istek, alan adına göre ilgili vService'e yönlendirilir: şifresiz trafikte Host başlığı, HTTPS'te TLS'teki SNI kullanılır. Her vService kendi sertifikası, profilleri ve Kurum Servisleriyle bağımsız çalışır.
- Nerede açılır vService → Virtual Hosting → alan adı listesi
- Gereksinim Paylaşan bütün vService'lerde listenin dolu olması; hepsinin aynı şifreleme sınıfında olması
- vService tipi Yalnızca HTTP
- Kurum Servisi tarafı Değişiklik gerekmez.
Adım adım yapılandırma
Load Balancer → Load Balancer vService List ekranında adresi kullanan mevcut vService seçilir ve Edit butonuna tıklanır.
Virtual Hosting anahtarı açılır (ilk alan adı satırı açılır) ve bu vService'e ait alan adları (ör. a.example.com) küçük harfle yazılır. Joker karakter (*.example.com) kullanılabilir. Şifresiz frontend 80 dışındaki bir porttaysa alan adı portla birlikte yazılır (ör. a.example.com:8080).
Save butonuna tıklanır.
İkinci alan adının sertifikası TR7'de yoksa Certificates & PKI → SSL/TLS Certificates → Add ile yüklenir (Sertifikamı TR7'ye nasıl yüklerim; hangi formatlar destekleniyor?).
Load Balancer → Load Balancer vService List → Add ile yeni bir HTTP vService formu açılır; Name girilir.
Virtual Hosting anahtarı açılır ve bu vService'in alan adları (ör. b.example.com) yazılır.
Frontend satırında ilk vService'le aynı IP ve port seçilir; Protocol ilk vService'le aynı şifreleme sınıfında olmalıdır (ikisi de Encrypted (HTTPS) grubundan ya da ikisi de şifresiz HTTP / HTTP → HTTPS). HTTPS'te Certificate alanında bu alan adına ait sertifika seçilir.
Default Backend Services tablosunda bu siteye ait Kurum Servisleri seçilir.
Save butonuna tıklanır. vService listesinde Virtual hosting tanımlı vService'lerin Type hücresinde bulut ikonu görünür. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da aktarılır; Manual Sync Mode açıksa Synchronize ile elle gönderilir.
Doğrulama
curl -I --resolve a.example.com:443:203.0.113.10 https://a.example.com/İstek a.example.com'un vService'ine ve onun Kurum Servislerine giderb.example.com ile tekrarlanır. Şifresiz trafikte curl -I -H "Host: a.example.com" http://203.0.113.10/ kullanılır. vService listesinde Type hücresindeki bulut ikonunun üzerine gelindiğinde vService'in alan adları listelenir.Sık Yapılan Hatalar
- vService'lerden birinde listeyi boş bırakmak. Paylaşım için bütün vService'lerde Virtual hosting listesi dolu olmalıdır; aksi hâlde form "Port collision" hatası gösterir.
- Şifreleme sınıflarını karıştırmak. HTTPS (HTTP/1.1, HTTP/2) satırı ile şifresiz (HTTP, HTTP → HTTPS) satır aynı IP:port'u paylaşamaz.
- 80 dışındaki portta şifresiz Virtual hosting için alan adını portsuz yazmak. Standart olmayan portlarda tarayıcı Host başlığına portu da ekler (
alan.adi:8080); eşleştirme Host başlığının tam değeriyle yapıldığından portsuz yazılan alan adı eşleşmez ve istek 503 alır. Bu portlarda alan adı listeye portla birlikte yazılır (alan.adi:8080). HTTPS'te eşleştirme SNI ile yapıldığı için port yazılmaz. - Alan adlarını büyük harfle yazmak. Eşleşme büyük/küçük harfe duyarlıdır; tarayıcılar alan adını küçük harfle gönderdiği için listeye küçük harfle yazılır.
- Eşleşmeyen isteklerin bir yere gideceğini sanmak. Hiçbir alan adına uymayan şifresiz istek 503 alır; HTTPS'te SNI eşleşmezse ya da istemci SNI göndermezse bağlantı kapatılır.
- HTTP/3 beklemek. Virtual hosting listesi dolu vService'te HTTP/3 rozetli protokoller sunulmaz.
Dokümantasyonda nasıl yapılır
