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

Linux’te Nginx ile HTTP’yi HTTPS’ye Yönlendirme (Tam Rehber)

Web sitenizi HTTPS ile güvenli hale getirmek artık isteğe bağlı değildir — kullanıcı verilerini korumak, güveni sağlamak ve güçlü SEO sıralamalarını elde etmek için temel bir gerekliliktir. Google gibi arama motorları şifrelenmemiş HTTP sitelerini aktif olarak cezalandırırken, modern tarayıcılar bunları “Güvenli Değil” olarak işaretler. Tüm HTTP trafiğini HTTPS’ye yönlendirmek, her ziyaretçinin herhangi bir manuel müdahale olmaksızın otomatik olarak sitenizin şifreli sürümüne ulaşmasını sağlar.

Bu kapsamlı kılavuz, tüm süreci adım adım anlatır: HTTP ve HTTPS arasındaki farkı anlamak, Let’s Encrypt aracılığıyla ücretsiz bir SSL sertifikası yüklemek, Nginx’te kalıcı bir 301 yönlendirmesi yapılandırmak ve Linux sunucunuzda her şeyin doğru çalıştığını doğrulamak.

İçindekiler

  1. HTTP vs. HTTPS: Fark Nedir?
  2. Ön Koşullar
  3. Adım 1: Let’s Encrypt ile SSL Sertifikası Yükleyin
  4. Adım 2: Nginx’i HTTP’yi HTTPS’ye Yönlendirmek İçin Yapılandırın
  5. Adım 3: Nginx Yapılandırmanızı Test Edin
  6. Adım 4: Değişiklikleri Uygulamak İçin Nginx’i Yeniden Yükleyin
  7. Adım 5: Yönlendirmenin Çalıştığını Doğrulayın
  8. Yaygın Sorunlar ve Sorun Giderme
  9. Sonuç

1. HTTP vs. HTTPS: Fark Nedir? {#http-vs-https}

Yapılandırmaya dalmadan önce, bu yönlendirmenin neden önemli olduğunu anlamak gerekir.

HTTP (Hypertext Transfer Protocol)

HTTP, bir web tarayıcısı ile sunucu arasında veri iletmek için kullanılan temel protokoldür. Ancak tüm verileri düz metin olarak iletir, yani herhangi bir bilgi — giriş kimlik bilgileri, ödeme ayrıntıları, kişisel veriler — ortadaki adam (MITM) saldırısı kullanan saldırganlar tarafından ele geçirilebilir. HTTP hiçbir şifreleme, kimlik doğrulama veya veri bütünlüğü garantisi sunmaz.

HTTPS (HTTP Secure)

HTTPS, HTTP’nin güvenli uzantısıdır. Standart HTTP protokolünü SSL/TLS şifrelemesi içine sararak istemci ve sunucu arasında şifreli bir tünel oluşturur. Bu şunları sağlar:

  • Gizlilik — Veriler aktarım sırasında üçüncü taraflar tarafından okunamaz.
  • Bütünlük — Veriler iletim sırasında değiştirilemez.
  • Kimlik Doğrulama — Kullanıcılar meşru sunucuyla iletişim kurduklarını doğrulayabilir.
  • SEO Avantajı — Google, HTTPS’yi sıralama sinyali olarak kullanır ve güvenli sitelere ölçülebilir bir avantaj verir.
  • Tarayıcı Güveni — Chrome, Firefox ve Edge, HTTPS siteleri için bir asma kilit simgesi ve HTTP siteleri için “Güvenli Değil” uyarısı görüntüler.

Sonuç: günümüzün ortamında HTTPS olmadan bir web sitesi çalıştırmak ciddi bir güvenlik ve iş riski oluşturur.

2. Ön Koşullar {#prerequisites}

Bu kılavuzu takip etmeden önce aşağıdakilerin hazır olduğundan emin olun:

  • Nginx çalıştıran bir Linux sunucusu (Ubuntu 20.04/22.04, Debian 11/12 veya benzer)
  • Sunucunuzun IP adresine işaret eden kayıtlı bir alan adı
  • Sunucunuza root veya sudo erişimi
  • Linux komut satırı hakkında temel bilgi

Web sitenizi barındıracak güvenilir bir sunucu ortamı arıyorsanız, AlexHost’tan VPS Hosting web uygulamaları için optimize edilmiş, tam yönetilen ve yönetilmeyen Linux VPS planları, SSD depolama ve yüksek kullanılabilirlik ağı sağlar.

Ayrıca geçerli bir SSL sertifikasına ihtiyacınız olacak. Bu kılavuz, Certbot aracılığıyla ücretsiz Let’s Encrypt sertifika yetkilisini kullanır. İşletme kullanımı için genişletilmiş doğrulama (EV) veya kuruluş tarafından doğrulanan (OV) sertifikaya ihtiyacınız varsa, AlexHost’tan SSL Sertifikaları‘nı keşfetmeyi düşünün.

3. Adım 1: Let’s Encrypt ile SSL Sertifikası Yükleyin {#install-ssl}

Let’s Encrypt, ücretsiz, otomatik ve açık bir sertifika yetkilisidir. Certbot, Let’s Encrypt’ten SSL/TLS sertifikaları elde etme ve yenileme işlemini otomatikleştiren ve web sunucunuzu yapılandıran resmi istemcidir.

Certbot ve Nginx Eklentisini Yükleyin

Paket dizininizi güncelleyin ve Certbot’u Nginx eklentisiyle birlikte yükleyin:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

SSL Sertifikanızı Alın ve Yükleyin

Certbot’u --nginx bayrağıyla çalıştırarak otomatik olarak bir sertifika alın ve Nginx’i kullanmak için yapılandırın:

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

example.com yerine gerçek alan adınızı yazın. Certbot şunları yapacak:

  1. ACME sorgusu aracılığıyla alan adı sahipliğini doğrula
  2. Let’s Encrypt’ten imzalı bir sertifika al
  3. Nginx yapılandırmasını otomatik olarak değiştirerek port 443’te HTTPS’yi etkinleştir
  4. İsteğe bağlı olarak otomatik HTTP-to-HTTPS yönlendirmesi kur (tam kontrol için aşağıda gösterildiği gibi bu adımı Certbot’ta atlayabilir ve manuel olarak yapılandırabilirsiniz)

Otomatik Sertifika Yenilemeyi Etkinleştirin

Let’s Encrypt sertifikaları her 90 günde bir sona erer. Certbot, yenilemeleri otomatik olarak işlemek için bir systemd zamanlayıcısı veya cron işi yükler. Etkin olduğunu doğrulayın:

sudo systemctl status certbot.timer

Ayrıca kuru çalıştırma yenileme testi yapabilirsiniz:

sudo certbot renew --dry-run

4. Adım 2: Nginx’i HTTP’yi HTTPS’ye Yönlendirmek İçin Yapılandırın {#configure-nginx}

SSL sertifikanız yüklendiğine göre, Nginx’i tüm HTTP (port 80) trafiğini HTTPS (port 443)’ye kalıcı olarak yönlendirmek için yapılandırmanız gerekir. Bu, 301 Moved Permanently yönlendirmesi kullanılarak yapılır; bu, SEO için doğru yönlendirme türüdür — bağlantı değerini sayfalarınızın HTTPS sürümüne aktarır.

Nginx Sunucu Bloğu Yapılandırmanızı Açın

Nginx site yapılandırmaları tipik olarak /etc/nginx/sites-available/ içinde depolanır. Alan adınız için yapılandırma dosyasını açın:

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

HTTP-to-HTTPS Yönlendirme Bloğunu Yapılandırın

Yapılandırma dosyanız bir veya daha fazla server bloğu içerecektir. Port 80 (HTTP) üzerinde dinleyen bloğu bulun ve aşağıdaki yönlendirme kuralıyla değiştirin veya güncelleyin:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # Permanently redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

HTTPS sunucu bloğunuz (port 443), Certbot’un muhtemelen otomatik olarak yapılandırdığı, şuna benzer görünmelidir:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/example.com/html;
    index index.html index.php;

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

> Neden return 301 yerine rewrite kullanılır?

> return 301 yönergesi, rewrite kuralından daha hızlı ve verimlidir. Ek konum bloklarını işlemek için Nginx’in gerek duymadan yönlendirme yanıtını hemen döndürür, sunucu yükünü azaltır ve yanıt süresini iyileştirir.

Yönlendirme Yönergesini Anlama

BileşenAçıklama
listen 80Nginx, HTTP port 80’de gelen bağlantıları dinler
listen [::]:80Port 80’de IPv6 desteğini etkinleştirir
server_nameBu bloğun hangi alan adlarına uygulanacağını tanımlar
return 301Kalıcı bir yönlendirme verir (SEO için en iyisi)
https://$hostYönlendirmede orijinal ana bilgisayar adını korur
$request_uriTam orijinal URI yolunu ve sorgu dizesini korur

5. Adım 3: Nginx Yapılandırmanızı Test Edin {#test-nginx}

Nginx yapılandırmanızı test etmeden önce asla yeniden yüklemez veya yeniden başlatmazsınız. Yapılandırma dosyasındaki bir söz dizimi hatası, Nginx’in başlamasını başarısız kılacak ve web sitenizi çevrimdışı bırakacaktır.

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

sudo nginx -t

Başarılı bir test aşağıdaki çıktıyı ü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. Nginx, sorunun algılandığı dosya ve satır numarasını gösterecektir. Yaygın sorunlar şunları içerir:

  • Yönergelerin sonunda eksik noktalı virgüller
  • Kapalı olmayan küme parantezleri {}
  • SSL sertifikaları için yanlış dosya yolları
  • Yinelenen server_name girişleri

Devam etmeden önce bildirilen hataları düzeltin.

6. Adım 4: Değişiklikleri Uygulamak İçin Nginx’i Yeniden Yükleyin {#reload-nginx}

Yapılandırma testi geçtikten sonra, değişikliklerinizi uygulamak için Nginx’i yeniden yükleyin. reload yerine restart kullanmak tercih edilir çünkü yeni yapılandırmayı etkin bağlantıları kesmeden sorunsuz bir şekilde uygular:

sudo systemctl reload nginx

Yeniden yüklemeden sonra Nginx’in doğru çalıştığını doğrulamak için:

sudo systemctl status nginx

Çıktıda active (running) görmelisiniz.

7. Adım 5: Yönlendirmenin Çalıştığını Doğrulayın {#verify-redirect}

Nginx yeniden yüklendiğine göre, yönlendirmenin doğru çalıştığını doğrulamak zamanı geldi.

Yöntem 1: Tarayıcı Testi

  1. Web tarayıcınızı açın.
  2. http://example.com adresine gidin (HTTPS değil HTTP kullanarak).
  3. Tarayıcının sizi otomatik olarak https://example.com adresine yönlendirdiğini gözlemleyin.
  4. Adres çubuğunda asma kilit simgesinin göründüğünü doğrulayın; bu geçerli bir SSL bağlantısını gösterir.

Yöntem 2: curl ile Komut Satırı Testi

Sayfa gövdesini indirmeden yalnızca HTTP yanıt başlıklarını almak için curl ile -I bayrağını kullanın:

curl -I http://example.com

Doğru yapılandırılmış bir yönlendirme aşağıdaki yanıtı üretir:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 01 Jan 2025 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/
Connection: keep-alive

Doğrulanacak temel göstergeler:

  • Durum kodu 301 Moved Permanently — Kalıcı bir yönlendirmenin yerinde olduğunu doğrular.
  • Location: https://example.com/ — Trafiğin HTTPS sürümüne yönlendirildiğini doğrular.

Yöntem 3: Çevrimiçi Yönlendirme Denetleyicisi

Ayrıca redirect-checker.org veya httpstatus.io gibi ücretsiz çevrimiçi araçları kullanarak tam yönlendirme zincirini izleyebilir ve yönlendirme döngüleri veya gereksiz atlamaların olmadığını doğrulayabilirsiniz.

8. Yaygın Sorunlar ve Sorun Giderme {#troubleshooting}

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