HTTP/2 destekleniyor mu?
Kısa cevap
Evet, HTTP vService'te. HTTP/2 iki bağlantıda birbirinden bağımsız açılır: istemci ile TR7 arasında, vService'in frontend satırında Protocol olarak HTTP/2 seçilip Certificate bağlanarak; TR7 ile Kurum Servisi arasında ise Kurum Servisinde SSL Service açılıp ALPN alanında HTTP 2.0 Enabled seçilerek ya da şifresiz HTTP/2 (h2c) dinleyen sunucu için SSL Service kapalı bırakılıp Cleartext HTTP/2 (h2c) işaretlenerek. HTTP/2 desteklemeyen istemciler aynı satıra HTTP/1.1 ile bağlanmaya devam eder. Kurum Servisine varsayılan bağlantı HTTP/1.1'dir.
Sorun: HTTP/2 Neden Kendiliğinden Açılmaz?
Tarayıcılar HTTP/2'yi TLS el sıkışmasında ALPN ile anlaşır; bu yüzden şifresiz bir frontend satırında HTTP/2 sunulmaz. Yeni eklenen frontend satırı 80 portu ve şifresiz HTTP protokolüyle gelir; HTTP/1.1 seçili satır da istemciye yalnızca HTTP/1.1 sunar. TR7'nin Kurum Servisine açtığı bağlantı da varsayılan olarak HTTP/1.1'dir. İstemci tarafında HTTP/2 için satırın protokolü, Kurum Servisi tarafında HTTP/2 için Kurum Servisinin SSL ayarları ya da Cleartext HTTP/2 (h2c) ayarı değiştirilir.
Çözüm: İki Bağlantı İçin İki Ayar
İki ayar birbirinden bağımsızdır; istemci tarafı tek başına açılabilir. Kurum Servisi tarafı yalnızca uygulama HTTP/2 gerektiriyorsa (ör. gRPC) açılır.
| Durumunuz | Uygun yöntem |
|---|---|
| Tarayıcılar siteye HTTP/2 ile bağlansın | Yöntem 1: İstemci – TR7 arası HTTP/2 |
| Kurum Servisi de HTTP/2 ile konuşsun (gRPC gibi) | Yöntem 1 + Yöntem 2: TR7 – Kurum Servisi arası HTTP/2 |
Yöntem 1: İstemci – TR7 Arası HTTP/2 Önerilen
Adım adım yapılandırma
Alan adının sertifikası TR7'de yoksa Certificates & PKI → SSL/TLS Certificates → Add adımları izlenir (nasıl eklenir).
Certificate Name girilir. Ayrı PEM dosyaları için Type = Manual seçilip Certificate Content ve Key Content alanlarına sertifika ve özel anahtar yapıştırılır; PFX dosyası için PFX seçilip PFX File alanından dosya seçilir ve Password alanına dosyanın parolası girilir. Ayrıntı: Sertifikamı TR7'ye nasıl yüklerim; hangi formatlar destekleniyor?
Formun altındaki Add butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP tipindeki vService seçilir ve Edit butonuna tıklanır.
Frontend tablosunda 443 portlu satır yoksa tablo başlığındaki (+) ikonuyla yeni satır eklenir; satır 80 portu ve HTTP protokolüyle gelir. IP seçilir ve port 443 yapılır.
443 portlu satırın Protocol alanında Encrypted (HTTPS) grubundan HTTP/2 seçilir. Şifreli bir protokol seçildiğinde formda Certificate alanı görünür.
Certificate alanından alan adına ait sertifika seçilir. Form sertifikasız kaydı engellemez; ancak sertifika seçilmezse satır şifresiz HTTP dinler ve HTTP/2 sunulmaz.
Aynı IP için 80 portlu ikinci bir satır eklenip Protocol olarak Redirect grubundan HTTP → HTTPS seçilirse şifresiz gelen istemciler 301 ile HTTPS'e yönlendirilir.
Save butonuna tıklanır. Kayıt hemen alınır; uygulamanın ilerlemesi ekranın sağ altındaki senkron göstergesinden izlenir. 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.
Kurum Servisi tarafında değişiklik gerekmez: TR7 Kurum Servisine varsayılan olarak HTTP/1.1 ile bağlanmaya devam eder.
Doğrulama
curl -vI --http2 https://www.example.comALPN: server accepted h2 · HTTP/2 200h2 görünür.vService'in HTTP Logs ekranında isteğin Request kolonu incelenir.
GET HTTP/2.0 https://www.example.com/Yöntem 2: TR7 – Kurum Servisi Arası HTTP/2
- Nasıl çalışır TR7, Kurum Servisine TLS ile bağlanır ve ALPN ile HTTP/2 sunar; Kurum Servisi destekliyorsa bağlantı HTTP/2 olur, desteklemiyorsa HTTP/1.1 ile devam eder. Şifresiz HTTP/2 (h2c) dinleyen sunucuya ise TLS olmadan, doğrudan HTTP/2 ile bağlanır.
- Nerede açılır Kurum Servisi → SSL Service → ALPN → HTTP 2.0 Enabled; şifresiz sunucuda Kurum Servisi → Cleartext HTTP/2 (h2c)
- Gereksinim Kurum Servisinin TLS üzerinden HTTP/2 ya da şifresiz HTTP/2 (h2c) sunması
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Backend Services ekranında Kurum Servisi seçilir ve Edit butonuna tıklanır.
Address alanındaki port, sunucunun TLS (HTTPS) dinlediği port olmalıdır (ör. 192.0.2.20:443); şifresiz porta TLS ile bağlanılamaz.
SSL Service açılır; TR7 Kurum Servisine TLS ile bağlanır.
ALPN alanında HTTP 2.0 Enabled seçilir. Bu alan SSL service ayarlarıyla birlikte görünür.
Formun altındaki Edit butonuna tıklanır. Kurum Servisini kullanan bütün vService'ler bu ayarla çalışı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.
Kurum Servisi tarafında: Sunucu TLS üzerinde HTTP/2 sunacak şekilde yapılandırılmış olmalıdır (ALPN'de h2); yalnızca HTTP/1.1 sunan sunucuyla bağlantı HTTP/1.1 olarak sürer.
Şifresiz HTTP/2 (h2c): Sunucu TLS olmadan HTTP/2 dinliyorsa 2-4. adımlar yerine Address alanındaki port sunucunun şifresiz portu olarak bırakılır, SSL Service kapalı kalır ve Cleartext HTTP/2 (h2c) işaretlenir. Bu bağlantıda her bağlantı doğrudan HTTP/2 olarak başlar ve HTTP/1.1'e düşülmez. Sağlık denetimi HTTP ise Health Checks profilindeki HTTP Version alanında HTTP/2 seçilir.
Doğrulama
Kurum Servisinin erişim logunda TR7'den gelen isteklerin protokol sürümüne bakılır.
"GET / HTTP/2.0" 200Sık Yapılan Hatalar
- Sertifika seçmemek. HTTP/2 seçili satırda sertifika yoksa satır şifresiz HTTP dinler.
- Keep Header Names action'ını kullanmak. Bu action bağlı vService'te HTTP/2 hem istemci hem Kurum Servisi tarafında kapatılır ve vService durumunda "Keep header names is active on this vService: … turned off" uyarısı görünür.
- L7 TCP vService'te HTTP/2 aramak. L7 TCP'nin protokol seçenekleri yalnızca TCP ve TCP + TLS'tir; HTTP/2 yalnızca HTTP vService'te vardır.
- Şifresiz HTTP/2 (h2c) sunucuda SSL Service'i açmak. TLS olmadan HTTP/2 dinleyen sunucu için SSL Service kapalı bırakılıp Cleartext HTTP/2 (h2c) işaretlenir; bu alan SSL Service işaretliyken formda görüntülenmez ve yalnızca HTTP vService'lerde etkilidir.
Dokümantasyonda nasıl yapılır
İlgili sorular
- HTTP/3 (QUIC) destekleniyor mu; nasıl açılır ve hangi koşullara bağlıdır?
- gRPC servislerimi TR7 arkasına koyabilir miyim?
- SSL Service seçeneği ne yapar; backend'e şifreli bağlanmak için ne gerekir?
- Backend'im header adlarının büyük/küçük harf yazımına duyarlı; TR7 bunları değiştiriyor mu (Keep Header Names / HTTP 1.0 Header Compatibility)?
