OpenLiteSpeed Üzerinde HTTP/2 ve HTTP/3 Aktifleştirme Rehberi

Modern web’de hız artık bir lüks değil, zorunluluk. Google’ın Core Web Vitals metriklerini sıralama faktörü olarak kullanmaya başlamasından bu yana, sunucu tarafındaki protokol optimizasyonları doğrudan SEO’yu etkiliyor. OpenLiteSpeed kullanıyorsanız ve hâlâ HTTP/1.1 ile çalışıyorsanız, masada ciddi bir performans bırakıyorsunuz demektir. Bu yazıda HTTP/2 ve HTTP/3’ü OpenLiteSpeed üzerinde nasıl aktifleştireceğinizi, yapılandıracağınızı ve doğrulayacağınızı adım adım ele alacağız.

HTTP/2 ve HTTP/3 Neden Bu Kadar Önemli?

Önce kısa bir teorik zemin oluşturalım. HTTP/1.1’de her istek için ayrı bir TCP bağlantısı kurulması gerekir ya da keep-alive ile bağlantılar sıralanır. Bu “head-of-line blocking” sorununa yol açar; bir istek gecikince arkasındaki tüm istekler bekler.

HTTP/2 ile gelen temel iyileştirmeler:

  • Tek TCP bağlantısı üzerinden çoğullama (multiplexing)
  • Header sıkıştırma (HPACK)
  • Sunucu tarafı push desteği
  • İkili (binary) protokol, daha verimli ayrıştırma

HTTP/3 ise bunun bir adım ötesine geçer:

  • TCP yerine QUIC protokolü kullanır (UDP tabanlı)
  • Bağlantı kurulum süresini dramatik şekilde azaltır (0-RTT)
  • Paket kaybında daha iyi performans
  • Bağlantı göçü desteği (IP değişiminde bağlantı kopmaz)

OpenLiteSpeed, LiteSpeed Technologies tarafından geliştirilen açık kaynaklı web sunucusudur ve HTTP/3/QUIC desteği açısından Apache ve Nginx’ten çok daha ileridedir. Nitekim OpenLiteSpeed, HTTP/3’ü destekleyen ilk web sunucularından biri olma özelliğini taşır.

Ön Gereksinimler

Yapılandırmaya geçmeden önce sisteminizin hazır olduğundan emin olmanız gerekiyor.

OpenLiteSpeed Versiyon Kontrolü

HTTP/3 desteği için OpenLiteSpeed 1.7.x veya üzeri gereklidir. Versiyonunuzu kontrol edin:

/usr/local/lsws/bin/lswsctrl version
# veya
/usr/local/lsws/bin/openlitespeed -v

Eğer eski bir sürüm kullanıyorsanız güncelleme yapmanız şart:

# Ubuntu/Debian için
sudo apt update
sudo apt install openlitespeed

# CentOS/AlmaLinux/Rocky için
sudo yum update openlitespeed
# veya
sudo dnf update openlitespeed

SSL Sertifikası Zorunluluğu

HTTP/2 ve HTTP/3 yalnızca HTTPS üzerinden çalışır. Geçerli bir SSL sertifikanız yoksa Let’s Encrypt ile ücretsiz sertifika alabilirsiniz:

sudo apt install certbot
sudo certbot certonly --standalone -d siteniz.com -d www.siteniz.com

Güvenlik Duvarı Ayarları

HTTP/3 için UDP 443 portunu açmanız kritik. Çoğu sysadmin bunu unutur ve saatlerce neden HTTP/3 çalışmıyor diye uğraşır:

# UFW kullanıyorsanız
sudo ufw allow 443/tcp
sudo ufw allow 443/udp

# firewalld kullanıyorsanız
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=443/udp
sudo firewall-cmd --reload

# iptables doğrudan kullanıyorsanız
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

HTTP/2 Aktifleştirme

OpenLiteSpeed’de HTTP/2 genellikle varsayılan olarak aktif gelir, ancak doğru yapılandırılmamış olabilir. Admin paneli üzerinden ve config dosyası üzerinden iki farklı yöntemle aktifleştirebilirsiniz.

Admin Paneli Üzerinden

Admin paneline https://sunucu-ip:7080 adresinden giriş yapın. Varsayılan kullanıcı adı admin, şifre kurulum sırasında belirlediğinizdir.

Listeners bölümüne gidin, HTTPS listener’ınızı seçin ve Edit butonuna tıklayın. Protocol alanında HTTP/2’nin işaretli olduğunu doğrulayın.

Yapılandırma Dosyası Üzerinden

OpenLiteSpeed’in ana yapılandırma dosyası /usr/local/lsws/conf/httpd_config.conf konumundadır. Listener yapılandırmanızı bulun ve düzenleyin:

sudo nano /usr/local/lsws/conf/httpd_config.conf

Listener bloğunuzun şu şekilde görünmesi gerekir:

listener HTTPS {
  address                 *:443
  secure                  1
  keyFile                 /etc/letsencrypt/live/siteniz.com/privkey.pem
  certFile                /etc/letsencrypt/live/siteniz.com/fullchain.pem
  certChain               1
  sslProtocol             24
  enableSpdy              15
}

enableSpdy parametresi aslında HTTP/2 ve SPDY protokollerini kontrol eder. Değerlerin anlamları:

  • 1: SPDY/2
  • 2: SPDY/3
  • 4: SPDY/3.1
  • 8: HTTP/2 over SSL
  • 15: Tümünü aktifleştir (önerilen)

Yapılandırmayı kaydettikten sonra OpenLiteSpeed’i yeniden başlatın:

sudo /usr/local/lsws/bin/lswsctrl restart
# veya
sudo systemctl restart lsws

HTTP/3 Aktifleştirme

HTTP/3 yapılandırması biraz daha dikkat gerektiriyor. OpenLiteSpeed, QUIC protokolünü kendi implementasyonu ile destekler.

QUIC/HTTP/3 Yapılandırması

Ana yapılandırma dosyasına QUIC ayarlarını ekleyin:

sudo nano /usr/local/lsws/conf/httpd_config.conf

Listener bloğunuzu şu şekilde genişletin:

listener HTTPS {
  address                 *:443
  secure                  1
  keyFile                 /etc/letsencrypt/live/siteniz.com/privkey.pem
  certFile                /etc/letsencrypt/live/siteniz.com/fullchain.pem
  certChain               1
  sslProtocol             24
  enableSpdy              15
  quic                    1
  quicShmDir              /dev/shm
}

quic parametresi QUIC/HTTP/3’ü aktifleştirir. quicShmDir ise QUIC’in paylaşımlı bellek için kullandığı dizini belirtir; /dev/shm en performanslı seçenektir çünkü RAM üzerinde çalışır.

Virtual Host Seviyesinde HTTP/3

Eğer birden fazla site barındırıyorsanız, her virtual host için ayrı ayrı yapılandırma yapabilirsiniz. Virtual host config dosyasını açın:

sudo nano /usr/local/lsws/conf/vhosts/siteniz/vhconf.conf

Şu bloğu ekleyin ya da mevcut bloğu güncelleyin:

vhssl  {
  keyFile                 /etc/letsencrypt/live/siteniz.com/privkey.pem
  certFile                /etc/letsencrypt/live/siteniz.com/fullchain.pem
  certChain               1
  enableSpdy              15
}

Alt Yapı Optimizasyonu

HTTP/2 ve HTTP/3 açtınız, iyi. Ama bunları maksimum verimle kullanmak için birkaç ek ayar daha yapmanız gerekiyor.

TLS Yapılandırması

Modern TLS yapılandırması hem güvenlik hem performans için kritiktir:

sudo nano /usr/local/lsws/conf/httpd_config.conf

Listener bloğunuza şunları ekleyin:

listener HTTPS {
  address                 *:443
  secure                  1
  keyFile                 /etc/letsencrypt/live/siteniz.com/privkey.pem
  certFile                /etc/letsencrypt/live/siteniz.com/fullchain.pem
  certChain               1
  sslProtocol             24
  ciphers                 ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
  enableECDHE             1
  renegProtection         1
  sslSessionCache         1
  sslSessionTickets       0
  enableSpdy              15
  quic                    1
  quicShmDir              /dev/shm
}

sslProtocol 24 değeri TLS 1.2 ve TLS 1.3’ü aktifleştirir (8 + 16 = 24). HTTP/3 için TLS 1.3 zorunludur, bu yüzden bu ayar kritik.

HTTP/2 Server Push Yapılandırması

HTTP/2’nin en güçlü özelliklerinden biri server push. Kritik kaynakları tarayıcı istemeden sunucudan gönderebilirsiniz:

sudo nano /usr/local/lsws/conf/vhosts/siteniz/vhconf.conf

Rewrite kuralları bölümüne ekleyin:

context / {
  location                $VH_ROOT/public_html
  allowBrowse             1
  rewrite  {
    enable                1
    rules                 <<<END_RULES
RewriteEngine on
Header add Link "</css/style.css>; rel=preload; as=style"
Header add Link "</js/app.js>; rel=preload; as=script"
END_RULES
  }
}

GZIP ve Brotli Sıkıştırma

HTTP/2 ve HTTP/3 ile birlikte sıkıştırma da devrede olmalı. Brotli, HTTP/2 çağının sıkıştırma algoritmasıdır ve GZIP’den %20-26 daha iyi sıkıştırır:

sudo nano /usr/local/lsws/conf/httpd_config.conf

Tuning bölümüne ekleyin:

tuning  {
  maxConnections          10000
  maxSSLConnections       10000
  connTimeout             300
  maxKeepAliveReq         10000
  smartKeepAlive          1
  keepAliveTimeout        5
  sndBufSize              0
  rcvBufSize              0
  gzipStaticCompressLevel 6
  compressibleTypes       default
  gzipMaxFileSize         10M
  gzipMinFileSize         300
}

Alt Yapı Testi: Her Şey Çalışıyor mu?

Yapılandırmayı tamamladıktan sonra doğrulama aşaması gelir. Bu adımı atlamayın; özellikle production ortamında sessiz hatalar can yakar.

Komut Satırından HTTP/2 Testi

curl ile HTTP/2 desteğini test edin:

curl -I --http2 https://siteniz.com

Çıktıda HTTP/2 200 görüyorsanız HTTP/2 çalışıyor demektir. Eğer HTTP/1.1 200 görüyorsanız bir yerde sorun var.

Daha detaylı bilgi için verbose modda çalıştırın:

curl -v --http2 https://siteniz.com 2>&1 | head -30

* Using HTTP2, server supports multiplexing mesajını görmelisiniz.

HTTP/3 Testi

HTTP/3 testi için curl’ün HTTP/3 destekli versiyonu gerekir. Alternatif olarak online araçlar kullanabilirsiniz:

# HTTP/3 destekli curl varsa
curl -I --http3 https://siteniz.com

# Alternatif: quiche-client ile test
/usr/local/lsws/bin/h2load -n 100 -c 10 --h1 https://siteniz.com

HTTP/3’ün çalıştığını response header’lardan da doğrulayabilirsiniz. alt-svc header’ı görmelisiniz:

curl -I https://siteniz.com | grep -i alt-svc

Beklenen çıktı şuna benzer bir şey olmalıdır:

alt-svc: h3=":443"; ma=2592000, h3-29=":443"; ma=2592000

Bu header, tarayıcıya “bir sonraki bağlantıda HTTP/3 kullanabilirsin” mesajını verir.

OpenLiteSpeed Log Kontrolü

HTTP/3 bağlantılarını log’lardan da takip edebilirsiniz:

sudo tail -f /usr/local/lsws/logs/access.log | grep -E '"QUIC|HTTP/3'

Veya error log’u kontrol edin:

sudo tail -100 /usr/local/lsws/logs/error.log | grep -i quic

Gerçek Dünya Senaryosu: E-Ticaret Sitesi Optimizasyonu

Bir müşterimin WooCommerce mağazasında yaşadığımız süreci anlatayım. Site Apache + HTTP/1.1 üzerinde çalışıyordu. Sayfa yükleme süresi ortalama 4.2 saniyeydi ve Google PageSpeed skoru masaüstünde 61, mobilde 43’tü.

OpenLiteSpeed’e geçtikten ve HTTP/2 ile HTTP/3’ü aktifleştirdikten sonra yaptığımız tam yapılandırma şöyleydi:

# /usr/local/lsws/conf/httpd_config.conf - Ana listener yapılandırması
listener HTTP {
  address                 *:80
  secure                  0
  map                     siteniz *
}

listener HTTPS {
  address                 *:443
  secure                  1
  keyFile                 /etc/letsencrypt/live/siteniz.com/privkey.pem
  certFile                /etc/letsencrypt/live/siteniz.com/fullchain.pem
  certChain               1
  sslProtocol             24
  ciphers                 ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
  enableECDHE             1
  sslSessionCache         1
  enableSpdy              15
  quic                    1
  quicShmDir              /dev/shm
  map                     siteniz *
}

Aynı zamanda virtual host seviyesinde de cache ve sıkıştırma ayarlarını optimize ettik. Sonuç olarak sayfa yükleme 1.8 saniyeye düştü, PageSpeed skoru masaüstünde 94, mobilde 81’e çıktı.

Yaygın Sorunlar ve Çözümleri

HTTP/3 Çalışmıyor, Hâlâ HTTP/2 Görüyorum

Bu çok yaygın bir durum ve panik yapmayın. HTTP/3’e geçiş anında gerçekleşmez. Tarayıcı önce alt-svc header’ını alır, sonraki ziyarette HTTP/3’e geçer. Bunu hızlandırmak için tarayıcı cache’ini temizleyip yeniden deneyin.

Daha kritik neden ise UDP 443 portunun kapalı olmasıdır. Kontrol edin:

sudo ss -ulnp | grep 443
# Çıktıda 0.0.0.0:443 görmelisiniz

SSL El Sıkışma Hataları

TLS 1.3 ile ilgili sorunlar yaşıyorsanız OpenSSL versiyonunuzu kontrol edin:

openssl version
# OpenSSL 1.1.1 veya üzeri gerekli

Eski bir sistem üzerindeyseniz ve TLS 1.3 desteklenmiyorsa:

# httpd_config.conf içinde sslProtocol değerini değiştirin
sslProtocol             8
# Sadece TLS 1.2 için (HTTP/3 çalışmaz ama HTTP/2 çalışır)

Graceful Restart vs Full Restart

Yapılandırma değişikliklerini uyguladıktan sonra her zaman tam restart değil graceful restart deneyin:

# Önce graceful deneyin - aktif bağlantıları kesmez
sudo /usr/local/lsws/bin/lswsctrl restart

# Bu işe yaramazsa tam restart
sudo systemctl restart lsws

# Yapılandırma syntax kontrolü için
sudo /usr/local/lsws/bin/lswsctrl configtest

İzleme ve Performans Takibi

HTTP/2 ve HTTP/3 aktif olduktan sonra sürekli izleme şart. OpenLiteSpeed’in yerleşik istatistik arayüzü https://sunucu-ip:7080/statistics adresinde erişilebilir durumda.

Komut satırından anlık bağlantı istatistiklerini görmek için:

# Aktif bağlantı sayısı
sudo /usr/local/lsws/bin/lswsctrl status

# QUIC istatistikleri
cat /tmp/lshttpd/.rtreport | grep -i quic

# Bağlantı protokol dağılımı için access log analizi
sudo awk '{print $9}' /usr/local/lsws/logs/access.log | sort | uniq -c | sort -rn

Uzun vadeli izleme için Prometheus + Grafana stack’ine OpenLiteSpeed exporter ekleyebilirsiniz. Bu konu ayrı bir yazıyı hak ediyor, ama temel kurulum için:

# OpenLiteSpeed stats endpoint'ini aktifleştirin
# Admin panel > Server Configuration > Log & Report > Enable Report
# Ardından stats http://localhost:7080/_status adresinde erişilebilir olur

Sonuç

OpenLiteSpeed üzerinde HTTP/2 ve HTTP/3 aktifleştirmek düşündüğünüzden çok daha az karmaşık. Kritik adımları özetlersek: OpenLiteSpeed sürümünüzü 1.7 veya üzerine getirin, geçerli bir SSL sertifikası edinin, UDP 443 portunu güvenlik duvarında açın, listener yapılandırmasına enableSpdy 15 ve quic 1 parametrelerini ekleyin, TLS protokolünü 1.2 ve 1.3’ü kapsayacak şekilde ayarlayın.

HTTP/3’ün etkileri özellikle mobil kullanıcılarda ve yüksek paket kayıp oranı olan bağlantılarda belirgin şekilde hissedilir. Türkiye’de mobil internet altyapısının değişken kalitesi göz önünde bulundurulduğunda, bu optimizasyon yerel kullanıcılarınız için ciddi bir fark yaratacaktır.

Son olarak şunu söyleyeyim: Yapılandırma değişikliklerini her zaman önce staging ortamında test edin. Production’da direkt deneme yapmak, özellikle yoğun trafikli sitelerde gereksiz risk demektir. HTTP/3 aktif olduktan sonra en az bir hafta boyunca log’larınızı takip edin ve herhangi bir anomali görüldüğünde hızlıca müdahale edebilmek için geri alma planınızın hazır olmasına dikkat edin.

Yorum yapın