format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightHTTP/3 (QUIC) Nedir ve Neden Önemli?
- arrow_rightHTTP/3'ün Temel Avantajları
- arrow_rightNginx HTTP/3 Desteği İçin Ön Gereksinimler
- arrow_right1. Nginx Sürüm Gereksinimi
- arrow_right2. OpenSSL veya BoringSSL
- arrow_right3. UDP Port Yapılandırması
- arrow_rightNGINX HTTP/3 Desteği ile Kurulum
- arrow_rightUbuntu/Debian Üzerinde Nginx Kurulumu
- arrow_rightNginx'i QUIC Desteği ile Derleme
- arrow_rightNginx Yapılandırma Dosyasında HTTP/3 Aktif Etme
- arrow_rightTemel Yapılandırma
- arrow_rightHTTP/3 Zorunlu Kılma (HTTP/2'den HTTP/3'e Zorunlu Geçiş)
- arrow_rightQUIC ve HTTP/3 Yapılandırma Seçenekleri
- arrow_rightÖnemli QUIC Direktifleri
- arrow_rightGelişmiş Yapılandırma Örneği
- arrow_rightHTTP/2 vs HTTP/3 Performans Karşılaştırması
- arrow_rightPerformans İstatistikleri
- arrow_rightHTTP/3 Aktif Olduğunu Doğrulama ve Test Etme
- arrow_right1. Tarayıcı ile Test
- arrow_right2. Komut Satırı ile Test
- arrow_right3. Online Araçlar
- arrow_right4. Nginx Hata Log Kontrolü
- arrow_rightGüvenlik Duvarı ve Port Yapılandırması
- arrow_rightUFW ile Yapılandırma
- arrow_rightfirewalld ile Yapılandırma
- arrow_rightiptables ile Yapılandırma
- arrow_rightYaygın Sorunlar ve Çözümleri
- arrow_right1. Tarayıcı HTTP/3'ü Desteklemiyor
- arrow_right2. SSL Sertifika Hataları
- arrow_right3. QUIC Bağlantı Kurulmuyor
HTTP/3 (QUIC) Nedir ve Neden Önemli?
HTTP/3, web protokollerinin en son neslidir ve Google tarafından geliştirilen QUIC (Quick UDP Internet Connections) protokolü üzerine inşa edilmiştir. HTTP/2'nin aksine, TCP yerine UDP protokolünü kullanarak bağlantı kurma süresini önemli ölçüde azaltır.
Akademik araştırmalara göre, QUIC protokolü bağlantı kurma süresini %30-40 oranında azaltabilmektedir. HTTP/3 ve QUIC protokolü hakkında daha detaylı bilgi almak için blog yazımızı inceleyebilirsiniz.
HTTP/3'ün Temel Avantajları
- Daha Hızlı Bağlantı Kurulumu: 0-RTT (Zero Round Trip Time) desteği ile tekrar bağlanan kullanıcılar için anında bağlantı sağlar.
- Paket Kaybına Dayanıklılık: TCP HOL (Head-of-Line) engellemesini ortadan kaldırarak paket kaybı durumunda bile veri akışını sürdürür.
- Gelişmiş Güvenlik: TLS 1.3 entegrasyonu ile her zaman şifreli bağlantı sunar.
- Multiplexing: HTTP/2'deki gibi paralel akışlar destekler ancak sıralama sorunu yaşamaz.
Nginx HTTP/3 Desteği İçin Ön Gereksinimler
Nginx'te HTTP/3 desteğini aktif etmeden önce aşağıdaki gereksinimleri karşılamanız gerekmektedir:
1. Nginx Sürüm Gereksinimi
Nginx 1.25.1 ve üzeri sürümler, QUIC protokolü desteğini native olarak içerir. Daha eski sürümler için OpenSSL veya BoringSSL ile manuel derleme yapılması gerekir.
2. OpenSSL veya BoringSSL
HTTP/3 için OpenSSL 3.0+ veya BoringSSL kullanmanız önerilir. Linux sunucu optimizasyonları konusunda deneyimli ekibimizden destek alabilirsiniz.
3. UDP Port Yapılandırması
HTTP/3, 443 numaralı UDP portunu kullanır. Güvenlik duvarınızda UDP trafiğine izin vermeniz gerekmektedir.
NGINX HTTP/3 Desteği ile Kurulum
Ubuntu/Debian Üzerinde Nginx Kurulumu
En kolay yöntem, Nginx'in resmi日夜夜 deposundan en güncel sürümü kurmaktır:
sudo apt update
sudo apt install -y nginx
# veya manuel derleme için:
sudo apt install -y build-essential libssl-dev libpcre3-dev zlib1g-dev
Nginx'i QUIC Desteği ile Derleme
HTTP/3 desteği ile Nginx derlemek için aşağıdaki adımları izleyin:
# Nginx kaynak kodunu indirin
wget https://nginx.org/download/nginx-1.25.4.tar.gz
tar -xzf nginx-1.25.4.tar.gz
cd nginx-1.25.4
# OpenSSL'yi yükleyin (henüz yüklü değilse)
git clone --depth 1 --branch openssl-3.0.15 https://github.com/openssl/openssl.git
# Nginx'i QUIC desteği ile derleyin
./configure \
--with-http_v3_module \
--with-openssl=./openssl \
--with-openssl-opt="enable-quic" \
--with-http_ssl_module
make -j$(nproc)
sudo make install
Önemli: Derleme süresi sunucu özelliklerine bağlı olarak 5-15 dakika arasında sürebilir. Kiralık kabin hizmetlerimiz ile yüksek performanslı sunucularda derleme yapabilirsiniz.
Nginx Yapılandırma Dosyasında HTTP/3 Aktif Etme
Nginx kurulduktan sonra, HTTP/3'ü aktif etmek için sunucu bloğunuzu güncellemeniz gerekmektedir.
Temel Yapılandırma
server {
listen 443 ssl http2;
listen 443 quic reuseport;
# SSL sertifika yapılandırması
ssl_certificate /etc/ssl/certs/site.crt;
ssl_certificate_key /etc/ssl/private/site.key;
# TLS sürümleri ve şifrelemeler
ssl_protocols TLSv1.3;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
ssl_prefer_server_ciphers on;
# QUIC başlıkları
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header Link '; rel=preload; as=style';
server_name example.com;
root /var/www/html;
location / {
index index.html index.htm;
}
}
HTTP/3 Zorunlu Kılma (HTTP/2'den HTTP/3'e Zorunlu Geçiş)
Tüm istemcilerin HTTP/3 kullanmasını istiyorsanız:
server {
listen 443 quic reuseport;
listen 443 ssl http2;
# H3 politikası zorunlu
ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256;
add_header Alt-Svc 'h3=":443"; ma=2592000';
# QUIC bağlantı ID'si
quic_retry on;
server_name example.com;
root /var/www/html;
}
QUIC ve HTTP/3 Yapılandırma Seçenekleri
Nginx, HTTP/3 için çeşitli yapılandırma seçenekleri sunar:
Önemli QUIC Direktifleri
| Direktif | Açıklama | Önerilen Değer |
|---|---|---|
quic_retry |
Bağlantı yeniden deneme mekanizmasını aktif eder | on |
quic_bpf |
BPF tabanlı paket filtrelemeyi etkinleştirir | on |
quic_uds |
QUIC socket yolunu belirtir | Opsiyonel |
http3_max_concurrent_streams |
Maksimum eşzamanlı akış sayısı | 128 |
http3_idle_timeout |
Boşta kalma zaman aşımı | 60s |
Gelişmiş Yapılandırma Örneği
http {
# HTTP/3 genel ayarları
http3_max_concurrent_streams 256;
http3_idle_timeout 120s;
http3_stream_buffer_size 64k;
server {
listen 443 quic reuseport;
listen 443 ssl http2;
# QUIC spesifik ayarlar
quic_retry on;
quic_bpf on;
ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/example.key;
ssl_protocols TLSv1.3;
add_header Alt-Svc 'h3=":443"; ma=86400' always;
add_header X-Quic '1' always;
root /var/www/example.com;
index index.html;
}
}
HTTP/2 vs HTTP/3 Performans Karşılaştırması
HTTP/2 ve HTTP/3 arasındaki temel farkları anlamak kritik önem taşır:
| Özellik | HTTP/2 | HTTP/3 |
|---|---|---|
| Transport Protokolü | TCP | UDP (QUIC) |
| Bağlantı Kurulumu | 1 RTT (yeniden: 0 RTT) | 0 RTT (tekrar bağlanmalarda) |
| HOL Engellemesi | Var | Yok |
| Varsayılan Şifreleme | Opsiyonel (HTTP/2 over TLS) | Zorunlu (TLS 1.3) |
| Header Sıkıştırma | HPACK | QPACK |
| Tarayıcı Desteği | Geniş |
Performans İstatistikleri
Google'ın internal testlerine göre, QUIC protokolü:
- Gecikme: Ağ gecikmesini %20-30 oranında azaltır.
- Paket Kaybı: %1 paket kaybında HTTP/3, HTTP/2'den 3 kat daha hızlıdır.
- Mobile Performans: Mobil ağlarda sayfa yüklenme süresini %15-25 kısaltır.
HTTP/3 Aktif Olduğunu Doğrulama ve Test Etme
1. Tarayıcı ile Test
Chrome veya Edge'de开发者 tools açıp, Network sekmesinde "Protocol" sütununu etkinleştirin. "h3" veya "HTTP/3" görüyorsanız HTTP/3 aktif demektir.
2. Komut Satırı ile Test
# curl ile HTTP/3 testi
curl -v --http3 https://example.com
# veya openssl ile QUIC el sıkışması
openssl s_client -connect example.com:443 -quic
3. Online Araçlar
HTTP/3 testi için aşağıdaki araçları kullanabilirsiniz:
- HTTP3 Check: http3check.is -> Site adresinizi girerek anında sonuç alın.
- KeyCDN Tools: HTTP/3 desteğini tarayıcı olmadan doğrulama imkanı sunar.
- Chrome DevTools: Network sekmesinde protocol sütununu görüntüleyin.
4. Nginx Hata Log Kontrolü
# QUIC ile ilgili hataları izle
sudo tail -f /var/log/nginx/error.log | grep -i quic
# veya access log'da h3 kontrolü
sudo tail -f /var/log/nginx/access.log | grep "HTTP/3"
Güvenlik Duvarı ve Port Yapılandırması
HTTP/3'ün düzgün çalışması için UDP port 443'ün açık olması gerekir:
UFW ile Yapılandırma
# UFW kullanıyorsanız
sudo ufw allow 443/udp
# Nginx'i yeniden başlatın
sudo systemctl reload nginx
firewalld ile Yapılandırma
# firewalld kullanıyorsanız
sudo firewall-cmd --permanent --add-port=443/udp
sudo firewall-cmd --reload
iptables ile Yapılandırma
# iptables kullanıyorsanız
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
Yaygın Sorunlar ve Çözümleri
1. Tarayıcı HTTP/3'ü Desteklemiyor
Belirti: Tarayıcı sürekli HTTP/2'ye düşüyor.
Çözüm: TLS 1.3'in aktif olduğundan emin olun ve Alt-Svc başlığının doğru gönderildiğini kontrol edin.
2. SSL Sertifika Hataları
Belirti: "ssl_protocols" hatası veya TLS el sıkışma başarısızlığı.
Çözüm: OpenSSL 3.0+ kullandığınızdan emin olun ve ssl_protocols TLSv1.3 direktifi ile sadece TLS 1.3'i etkinleştirin.
3. QUIC Bağlantı Kurulmuyor
Belirti: UDP 443 portu üzerinden bağlantı sağlanamıyor.
Çözüm: Güvenlik duvarınızda UDP trafiğine izin verin ve quic