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.