15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
01.11.2024

Ubuntu’da HTTP/2 Desteği ile Nginx Kurulumu (Tam Rehber)

Nginx, dünyanın en yaygın olarak dağıtılan web sunucularından biridir ve olağanüstü performansı, düşük bellek ayak izi ve binlerce eşzamanlı bağlantıyı işleme yeteneği ile ünlüdür. HTTP/2 ile birleştirildiğinde, Nginx daha da güçlü bir platform haline gelir — çoğullanmış istekleri, başlık sıkıştırmasını, sunucu push’unu ve dramatik olarak azaltılmış sayfa yükleme sürelerini etkinleştirir.

Bu kapsamlı kılavuz, Ubuntu 20.04 ve Ubuntu 22.04 LTS üzerinde tam HTTP/2 desteği ile Nginx yüklemek için gereken her adımda size yol gösterir; ilk kurulumdan SSL yapılandırması, sunucu bloğu optimizasyonu ve canlı doğrulamaya kadar.

> Bu kılavuz kimin için? Bir Linux sunucusunda web performansını en üst düzeye çıkarmak isteyen sistem yöneticileri, geliştiriciler ve web sitesi sahipleri. Sitenizi bir VPS Hosting planında veya bir Dedicated Server‘da çalıştırıyorsanız, bu öğretici doğrudan ortamınız için geçerlidir.

İçindekiler

  1. HTTP/2 Nedir ve Neden Önemlidir?
  2. Ön Koşullar
  3. Adım 1 — Sistem Paket İndeksini Güncelleyin
  4. Adım 2 — Nginx’i Yükleyin
  5. Adım 3 — OpenSSL’i Yükleyin
  6. Adım 4 — Let’s Encrypt ile Ücretsiz SSL Sertifikası Alın
  7. Adım 5 — Nginx’i HTTP/2 için Yapılandırın
  8. Adım 6 — Nginx HTTP/2 Yapılandırmanızı Optimize Edin
  9. Adım 7 — Nginx Yapılandırmasını Test Edin
  10. Adım 8 — Nginx’i Yeniden Başlatın ve Değişiklikleri Uygulayın
  11. Adım 9 — HTTP/2’nin Etkin Olduğunu Doğrulayın
  12. Yaygın Sorunları Giderme
  13. Sonuç

HTTP/2 Nedir ve Neden Önemlidir?

HTTP/2, Hypertext Transfer Protocol’ün ikinci ana sürümüdür ve RFC 7540‘ta standartlaştırılmıştır. 1997’den beri kullanılan HTTP/1.1’in performans sınırlamalarını gidermek için tasarlanmıştır.

HTTP/2’nin HTTP/1.1’e göre temel avantajları:

ÖzellikHTTP/1.1HTTP/2
ÇoğullamaBağlantı başına bir istekBirden fazla eşzamanlı istek
Başlık sıkıştırmasıDüz metin başlıklarıHPACK sıkıştırması
Sunucu pushDesteklenmiyorDestekleniyor
İkili protokolMetin tabanlıİkili çerçeveleme
Bağlantı yeniden kullanımıSınırlıTamamen kalıcı
GecikmeDaha yüksekÖnemli ölçüde azaltılmış

Web sitesi sahipleri için HTTP/2’yi etkinleştirmek doğrudan daha hızlı sayfa yüklemelerine, daha iyi Core Web Vitals puanlarına ve geliştirilmiş SEO sıralamalarına çevrilir — çünkü Google sayfa hızını bir sıralama sinyali olarak kullanır.

> Önemli: HTTP/2, HTTPS (TLS/SSL) gerektirir. HTTP/2’yi herhangi bir modern tarayıcıda şifrelenmemiş bir bağlantı üzerinden çalıştıramazsınız. Bu nedenle SSL sertifikası almak bu kılavuzda zorunlu bir adımdır. Etki alanınız için güvenilir bir sertifikaya ihtiyacınız varsa, AlexHost tüm kullanım durumları için SSL Sertifikaları sunmaktadır.

Ön Koşullar

Başlamadan önce aşağıdakilerin yerinde olduğundan emin olun:

  • Ubuntu 20.04 LTS veya Ubuntu 22.04 LTS çalıştıran bir sunucu (adımlar her ikisi için neredeyse aynıdır)
  • sudo ayrıcalıklarına sahip root olmayan bir kullanıcı veya doğrudan root erişimi
  • Sunucunuzun IP adresine bir A kaydı aracılığıyla işaret eden kayıtlı bir etki alanı adı
  • Güvenlik duvarında açık 80 ve 443 numaralı bağlantı noktaları (UFW veya iptables)
  • Linux komut satırı hakkında temel bilgi

Henüz bir etki alanınız yoksa, AlexHost Domain Registration aracılığıyla doğrudan bir etki alanı kaydedebilir ve dakikalar içinde sunucunuza işaret edebilirsiniz.

Adım 1 — Sistem Paket İndeksini Güncelleyin

Her zaman paket indeksinizi yenileyerek tüm yazılımların en son sürümlerini yüklediğinizden emin olun:

sudo apt update && sudo apt upgrade -y

Bu komut yerel paket listesini günceller ve sisteminizde zaten yüklü olan eski paketleri yükseltir.

Adım 2 — Nginx’i Yükleyin

Nginx Paketini Yükleyin

Ubuntu’nun varsayılan depoları Nginx’in kararlı bir sürümünü içerir. Bunu şu şekilde yükleyin:

sudo apt install nginx -y

Nginx Hizmetini Başlatın

Yüklendikten sonra Nginx hizmetini hemen başlatın:

sudo systemctl start nginx

Nginx’i Önyüklemede Otomatik Olarak Başlatılacak Şekilde Etkinleştirin

Sunucu her yeniden başlatıldığında Nginx’in otomatik olarak başlatılmasını sağlayın:

sudo systemctl enable nginx

Nginx’in Çalıştığını Doğrulayın

Hizmetin etkin ve çalıştığını doğrulayın:

sudo systemctl status nginx

Şuna benzer bir çıktı görmelisiniz:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Nginx’i Güvenlik Duvarından Geçirine İzin Verin

UFW sunucunuzda etkinse, HTTP ve HTTPS trafiğine izin verin:

sudo ufw allow 'Nginx Full'
sudo ufw status

Nginx Full 80 numaralı bağlantı noktasını (HTTP) ve 443 numaralı bağlantı noktasını (HTTPS) açar; her ikisi de bu kurulum için gereklidir.

Adım 3 — OpenSSL’i Yükleyin

HTTP/2, TLS’ye bağlıdır ve TLS da OpenSSL’ye bağlıdır. Tüm şifreleme bağımlılıklarının kullanılabilir olduğundan emin olmak için bunu yükleyin:

sudo apt install openssl -y

Yüklü sürümü doğrulayın:

openssl version

OpenSSL 3.0.x veya benzeri bir çıktı görmelisiniz. 1.0.2’nin üzerindeki herhangi bir sürüm HTTP/2 için gerekli olan şifre paketlerini tam olarak destekler.

Adım 4 — Let’s Encrypt ile Ücretsiz SSL Sertifikası Alın

Let’s Encrypt, tüm büyük tarayıcılar tarafından güvenilen ücretsiz, otomatik olarak yenilenebilir SSL/TLS sertifikaları sağlar. Certbot istemcisi tüm süreci basit hale getirir.

Certbot ve Nginx Eklentisini Yükleyin

sudo apt install certbot python3-certbot-nginx -y

SSL Sertifikası İsteyin

your_domain.com yerine gerçek kayıtlı etki alanı adınızı yazın:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot şunları yapacaktır:

  1. Etki alanı sahipliğini bir HTTP sınaması aracılığıyla doğrulayın
  2. Let’s Encrypt’ten sertifikayı yayınlayın
  3. Nginx yapılandırmanızı otomatik olarak değiştirerek sertifikayı kullanmasını sağlayın
  4. HTTP’den HTTPS’ye yönlendirmeler ayarlayın

Etkileşimli istemleri izleyin. HTTP trafiğini HTTPS’ye yönlendirip yönlendirmeyeceğiniz sorulduğunda, seçenek 2 (Yönlendir)‘i seçin — bu önerilen seçimdir.

Otomatik Sertifika Yenilemeyi Doğrulayın

Let’s Encrypt sertifikaları 90 gün sonra sona erer. Certbot, bunları otomatik olarak yenilemek için bir cron işi veya systemd zamanlayıcısı yükler. Yenileme işlemini bir test çalışması ile test edin:

sudo certbot renew --dry-run

Hata görünmezse, otomatik yenileme doğru şekilde yapılandırılmıştır.

> İpucu: Birden fazla etki alanı veya joker sertifikası olan üretim ortamları için, SSL altyapınız üzerinde tam kontrol için bir Dedicated Server düşünün.

Adım 5 — Nginx’i HTTP/2 için Yapılandırın

SSL yerinde olduğuna göre, Nginx sunucu bloğu yapılandırmasında HTTP/2’yi açıkça etkinleştirmeniz gerekir.

Nginx Yapılandırma Dosyasını Açın

Varsayılan site yapılandırması şurada bulunur:

sudo nano /etc/nginx/sites-available/default

Etki alanınız için özel bir sunucu bloğu oluşturduysanız (önerilir), bunun yerine o dosyayı açın:

sudo nano /etc/nginx/sites-available/your_domain.com

Sunucu Bloğunu HTTP/2’yi Etkinleştirmek için Güncelleyin

listen 443 ssl; yönergesini bulun. Certbot bunu otomatik olarak ekleyecektir. Bunu http2 içerecek şekilde değiştirin:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name your_domain.com www.your_domain.com;

    # SSL Certificate paths (set by Certbot)
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/your_domain.com/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

# HTTP to HTTPS redirect block
server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

Kritik değişiklik listen satırındadır: http2 öğesini ssl öğesinden sonra eklemek, o sanal ana bilgisayar için HTTP/2 protokolünü etkinleştirir.

Kaydedin ve Çıkın

CTRL + X tuşuna basın, ardından Y, ardından Enter tuşuna basarak dosyayı kaydedin ve nano editörünü kapatın.

Adım 6 — Nginx HTTP/2 Yapılandırmanızı Optimize Edin

HTTP/2’yi etkinleştirmek iyi bir başlangıçtır, ancak ek optimizasyonlar uygulamak kurulumunuzdan maksimum performans elde etmenizi sağlar.

Önerilen SSL ve Performans Ayarları

server bloğunuzun içine aşağıdaki yönergeleri ekleyin veya doğrulayın:

# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;

# Strong cipher suites compatible with HTTP/2
ssl_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:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

> HTTP/2 ve Gzip Hakkında Not: HTTP/2, kendi HPACK başlık sıkıştırmasını kullanır, ancak yanıt gövdeleri için Gzip’i etkinleştirmek, metin tabanlı varlıklar için önemli bant genişliği tasarrufu sağlar.

Adım 7 — Nginx Yapılandırmasını Test Edin

Yapılandırmayı sözdizimi hataları için test etmeden Nginx’i asla yeniden başlatmayın. Yanlış yapılandırılmış bir dosya tüm web sunucunuzu kapatabilir.

Yerleşik yapılandırma testini çalıştırın:

sudo nginx -t

Başarılı bir test şunu üretir:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Herhangi bir hata görürseniz, çıktıyı dikkatle gözden geçirin. Hata mesajı, sorunun algılandığı dosya adını ve satır numarasını içerecektir.

Adım 8 — Nginx’i Yeniden Başlatın ve Değişiklikleri Uygulayın

Yapılandırma testi geçtikten sonra, tüm değişiklikleri uygulamak için Nginx’i yeniden başlatın:

sudo systemctl restart nginx

Alternatif olarak, sıfır kapalı kalma süresi yeniden yüklemesi tercih ederseniz (etkin bağlantıları kesmeden yapılandırma değişikliklerini uygular):

sudo systemctl reload nginx

HTTP/2 etkinleştirmesi özelinde, yeni protokol ayarlarının tam olarak başlatılmasını sağlamak için tam bir yeniden başlatma önerilir.

Adım 9 — HTTP/2’nin Etkin Olduğunu Doğrulayın

Nginx’i yeniden başlattıktan sonra, HTTP/2’nin aşağıdaki yöntemlerden birini kullanarak istemcilere sunulduğunu doğrulayın.

Yöntem 1: curl Kullanma

curl komut satırı aracı, kullanılan protokol sürümünü bildirebilir:

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

Yanıt başlığını arayın:

HTTP/2 200

HTTP/2 200 görürseniz, HTTP/2 doğru şekilde çalışıyor.

Yöntem 2: OpenSSL Komutunu Kullanma

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın