HTTP'den HTTPS'e yönlendirmeyi nasıl yaparım?
Kısa cevap
En kolay yol, HTTP vService'e 80 portu için Protocol = HTTP → HTTPS olan bir frontend satırı eklemektir; HTTPS satırı Encrypted (HTTPS) protokolüyle ve sertifikayla kalır. 80'e gelen istekler 301 koduyla aynı Host ve yolun https:// adresine yönlendirilir; bu kod değiştirilemez. 307/308 gibi başka bir kod ya da yalnızca belirli yolların yönlendirilmesi gerekiyorsa Redirect to HTTPS aksiyonu If SSL is NOT terminated koşuluyla, başka bir hedef adres ya da 443 dışı port gerekiyorsa Location Redirection aksiyonu kullanılır. Yönlendirme yalnızca HTTP vService'te yapılabilir.
Sorun: Kullanıcılar Siteye Şifresiz HTTP ile Giriyor
Kullanıcılar adres çubuğuna http:// yazarak ya da eski bağlantılardan siteye şifresiz ulaşabilir. Bu trafik yolda okunabilir; oturum çerezleri ve form verileri açığa çıkabilir. 80 portuna gelen isteklerin kendiliğinden HTTPS'e yönlendirilmesi gerekir.
Çözüm: Dört Yöntem
Yöntemler birbirinin alternatifidir; aynı istek için yalnızca biri kullanılır.
| Durumunuz | Uygun yöntem |
|---|---|
| Bütün HTTP trafiğini aynı adresin HTTPS sürümüne göndermek | Yöntem 1: Frontend satırında HTTP → HTTPS |
| 307/308 kodu ya da yalnızca belirli yollar için yönlendirme | Yöntem 2: Redirect to HTTPS aksiyonu |
| Başka bir alan adına ya da 443 dışı bir HTTPS portuna yönlendirmek | Yöntem 3: Location redirection aksiyonu |
| Komut satırından | Yöntem 4: WEB-CLI |
Yöntem 1: Frontend Satırında HTTP → HTTPS Önerilen
- Nasıl çalışır 80 portu için eklenen satır, şifresiz gelen her isteği 301 koduyla aynı Host ve yolun
https://adresine yönlendirir (sorgu dizesi korunur). HTTPS isteklerine dokunmaz; döngü oluşmaz. - Nerede açılır vService düzenleme formu → Frontend → Protocol → Redirect grubu → HTTP → HTTPS
- Gereksinim HTTP vService; 443 portunda Encrypted (HTTPS) protokollü ve sertifikalı bir satır
- vService tipi HTTP
Adım adım yapılandırma
HTTPS satırında kullanılacak sertifika TR7'de yoksa Certificates & PKI → SSL/TLS Certificates ekranında Add tıklanır (nasıl eklenir).
Certificate Name girilir; ayrı PEM dosyaları için Type = Manual seçilip Certificate Content ve Key Content girilir, PKCS#12 dosyası için Type = PFX seçilip dosya ve parolası girilir (Sertifikamı TR7'ye nasıl yüklerim; hangi formatlar destekleniyor?).
Formun altındaki Add tıklanır; sertifika listeye eklenir.
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Frontend listesindeki HTTPS satırında Port = 443, Protocol = Encrypted (HTTPS) grubundan HTTP/2 (ya da HTTP/1.1) seçilir. Şifreli bir satır seçilince görünen Certificate alanında sertifika seçilir; sertifika seçilmezse satır şifresiz dinler.
Frontend tablosunun başlığındaki + simgesiyle yeni satır eklenir: Frontend IP = HTTPS satırındaki adres, Port = 80, Protocol = Redirect grubundaki HTTP → HTTPS (tipik yapılandırma). 80 portunda daha önce HTTP protokollü bir satır varsa yeni satır eklenmez, o satırın Protocol değeri değiştirilir.
Save tıklanır; yönlendirme ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Şifresiz adres sorgulanır; ardından HTTPS adresinin yönlendirme döndürmediği kontrol edilir.
Komut: curl -sI "http://www.example.com/yol?x=1" · curl -sI https://www.example.com/
301 · Location: https://www.example.com/yol?x=1 · HTTPS: 200Yöntem 2: Redirect to HTTPS Aksiyonu
- Nasıl çalışır Aksiyon, koşula uyan istekleri seçilen kodla aynı Host ve yolun
https://adresine yönlendirir. HTTPS isteklerini kendiliğinden ayırmadığı için hazır If SSL is NOT terminated koşuluyla kullanılır. - Nerede açılırLoad Balancer → Actions → Action Type = Redirect to HTTPS
- Gereksinim HTTP vService'te 80 portunda Protocol = HTTP olan bir frontend satırı ve HTTPS satırı
- vService tipi HTTP
Adım adım yapılandırma
Yalnızca belirli yollar yönlendirilecekse Load Balancer → Conditions ekranında Add tıklanır (nasıl eklenir). Bütün HTTP trafiği yönlendirilecekse 1–3. adımlar atlanır.
Criteria = Path seçilir ve yönlendirilecek yol yazılır (ör. /login ile başlayan istekler).
Add tıklanır; koşul listeye eklenir.
Load Balancer → Actions ekranında Add tıklanır (nasıl eklenir).
Action Name girilir; Action Type = Redirect to HTTPS seçilir. Redirect Scheme Code varsayılan olarak 301'dir; POST isteklerinin yöntemi korunacaksa 307 ya da 308 seçilir. Listede 300–308 arasının tamamı bulunur, ancak yalnızca 301, 302, 303, 307 ve 308 yönlendirme kodudur. Conditions alanında hazır If SSL is NOT terminated koşulu seçilir; 2. adımdaki Path koşulu da kullanılacaksa aynı gruba and ile eklenir.
Add tıklanır; aksiyon listeye eklenir.
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Frontend listesinde 80 portlu satırın Protocol değeri HTTP olmalıdır. Aksiyon, satırdaki yönlendirmeden önce işlenir; ancak satırda HTTP → HTTPS seçili kalırsa aksiyonun koşuluna uymayan şifresiz istekler de 301 ile yönlendirilir. Satır yoksa Frontend tablosunun başlığındaki + simgesiyle eklenir.
Save tıklanır. Aksiyon vService'e eklenmedikçe çalışmaz. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Şifresiz adres sorgulanır; ardından HTTPS adresinin yönlendirme döndürmediği kontrol edilir.
Komut: curl -sI "http://www.example.com/login?x=1" · curl -sI https://www.example.com/login
Seçilen kod (ör. 308) · Location: https://www.example.com/login?x=1 · HTTPS: 200Aksiyonda Hit Counter açıksa vService Dashboard'unda Action Hits sekmesine bakılır.
Aksiyonun sayacı artarYöntem 3: Location Redirection Aksiyonu
- Nasıl çalışır İstek, Redirect Location alanına yazılan adrese yönlendirilir; adres sabit metin ve Smart Variables ile oluşturulur. Başka bir alan adına ya da
https://www.example.com:8443gibi 443 dışı bir porta yönlendirmek için kullanılır. - Nerede açılırLoad Balancer → Actions → Action Type = Location Redirection
- Gereksinim HTTP vService'te 80 portunda bir frontend satırı; aksiyon koşul olmadan çalışmaz
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions ekranında Add tıklanır (nasıl eklenir).
Action Name girilir; Action Type = Location Redirection seçilir. Redirect Location alanına https:// ile başlayan hedef yazılır (ör. https://www.example.com:8443) ve alanın fx butonundan %PATHQ (Path + query of the request) değişkeni eklenerek isteğin yolu ve sorgu dizesi korunur. Redirect Code varsayılan olarak 301'dir.
Conditions alanında hazır If SSL is NOT terminated koşulu seçilir. Bu aksiyon koşul gerektirir: koşul seçilmeden kaydedilirse arayüz uyarı vermez, ancak aksiyon hiç çalışmaz.
Add tıklanır; aksiyon listeye eklenir.
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır. 80 portunda bir frontend satırı bulunmalıdır; satırın Protocol değeri HTTP ya da HTTP → HTTPS olabilir, aksiyon satırdaki yönlendirmeden önce işlenir.
Save tıklanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Şifresiz adres sorgulanır.
Komut: curl -sI "http://www.example.com/yol?x=1"
301 · Location: https://www.example.com:8443/yol?x=1Yöntem 4: WEB-CLI
- Nasıl çalışır Yönlendirme satırı komut satırından vService'in frontend listesine eklenir;
--listen.N.ssl redirectarayüzdeki HTTP → HTTPS seçeneğidir. - Nerede açılır TR7 WEB-CLI →
lb service update - Gereksinim WEB-CLI erişimi; vService'te 443 portunda sertifikalı HTTPS satırı
- vService tipi HTTP
Adım adım yapılandırma
vService kaydı görüntülenir (lb service):
lb service show <vService>Çıktıdaki listen.0, listen.1 … satırları frontend satırlarıdır; HTTPS satırı ve kullandığı adres buradan okunur.
--listen.N o sıradaki mevcut satırın alanlarını değiştirir; bu yüzden yeni satır ilk boş sıraya yazılır. vService'te yalnızca HTTPS satırı (listen.0) varsa sıra 1'dir:
lb service update id <vService> --listen.1.ip <adres> --listen.1.port 80 --listen.1.ssl redirectAdres, Tab tuşuyla listelenen biçimde yazılır (ör. 203.0.113.10/24).
Doğrulama
vService kaydı yeniden görüntülenir.
Komut: lb service show <vService>
listen.1.port 80 · listen.1.ssl redirectSık Yapılan Hatalar
- Redirect to HTTPS aksiyonunu koşulsuz eklemek. HTTPS istekleri de yönlendirilir ve sonsuz döngü oluşur; If SSL is NOT terminated koşulu seçilir.
- Yalnızca belirli yolları yönlendirmek isterken 80 satırında HTTP → HTTPS bırakmak. Aksiyon satırdaki yönlendirmeden önce işlenir ve koşuluna uyan isteklere kendi kodunu uygular; ancak koşula uymayan bütün şifresiz istekler de satır tarafından 301 ile yönlendirilir. Yalnızca seçili yollar yönlendirilecekse 80 satırının Protocol değeri HTTP yapılır.
- API istemcilerinde 301 kullanmak. 301 ve 302 yönlendirmesinde istemciler POST isteğini GET'e çevirebilir; yöntemin korunması için aksiyonla 307 ya da 308 seçilir.
- HTTPS satırını 443 dışı bir portta tutup HTTP → HTTPS kullanmak. Yönlendirme adresinde port yer almaz; tarayıcı 443'e gider. 443 dışı port için Location redirection aksiyonu kullanılır.
- Yönlendirmenin mixed content'i çözdüğünü düşünmek. Sayfa içindeki
http://kaynakları ayrıca düzeltilir (HTTPS'e geçtikten sonra sayfalarda "mixed content" uyarısı çıkıyor; nasıl çözerim?). - L7 TCP vService'te yönlendirme aramak. HTTP → HTTPS seçeneği ve yönlendirme aksiyonları yalnızca HTTP vService'te vardır.
Dokümantasyonda nasıl yapılır
