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ına ulaşmak 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 manuel müdahale olmadan otomatik olarak sitenizin şifreli sürümüne ulaşmasını sağlar.
Bu kapsamlı rehber sizi tüm süreç boyunca yönlendirir: 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 şekilde çalıştığını doğrulamak.
1. HTTP vs. HTTPS: Fark Nedir?
Yapılandırmaya geçmeden ö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 oturum açma kimlik bilgileri, ödeme ayrıntıları, kişisel veriler gibi herhangi bir bilgi, ortadaki adam (MITM) saldırısını 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 bir sıralama sinyali olarak kullanır ve güvenli sitelere ölçülebilir bir avantaj sağlar.
- Tarayıcı Güveni — Chrome, Firefox ve Edge, HTTPS siteleri için bir kilit simgesi ve HTTP siteleri için “Güvenli Değil” uyarısı gösterir.
Sonuç olarak: günümüzün ortamında bir web sitesini HTTPS olmadan çalıştırmak ciddi bir güvenlik ve iş riski oluşturur.
2. Ön Koşullar
Bu kılavuzu takip etmeden önce, aşağıdakilerin yerinde olduğundan emin olun:
- Nginx çalıştıran bir Linux sunucusu (Ubuntu 20.04/22.04, Debian 11/12 veya benzeri)
- Sunucunuzun IP adresine işaret eden kayıtlı bir alan adı
- Sunucunuza root veya
sudoerişimi - Linux komut satırı hakkında temel bilgi
Web sitenizi barındırmak için güvenilir bir sunucu ortamı arıyorsanız, AlexHost’tan VPS Hosting web uygulamaları için optimize edilmiş, SSD depolama ve yüksek kullanılabilirlik ağı ile tam yönetilen ve yönetilmeyen Linux VPS planları 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ükleme
Let’s Encrypt, ücretsiz, otomatik ve açık kaynaklı bir sertifika yetkilisidir. Certbot, Let’s Encrypt’ten SSL/TLS sertifikaları alma ve yenileme işlemini otomatikleştiren ve web sunucunuzu yapılandıran resmi istemcidir.
Certbot ve Nginx Eklentisini Yükleme
Paket dizininizi güncelleyin ve Certbot’u Nginx eklentisiyle birlikte yükleyin:
sudo apt update
sudo apt install certbot python3-certbot-nginx -ySSL Sertifikanızı Alma ve Yükleme
Certbot’u --nginx bayrağıyla çalıştırarak otomatik olarak bir sertifika alın ve Nginx’i kullanacak şekilde yapılandırın:
sudo certbot --nginx -d example.com -d www.example.comexample.com yerine gerçek alan adınızı yazın. Certbot şunları yapacaktır:
- ACME sorgusu aracılığıyla alan adı sahipliğini doğrulama
- Let’s Encrypt’ten imzalı bir sertifika alma
- HTTPS’yi 443 numaralı bağlantı noktasında etkinleştirmek için Nginx yapılandırmasını otomatik olarak değiştirme
- İsteğe bağlı olarak otomatik HTTP-to-HTTPS yönlendirmesi ayarlama (tam kontrol için bu adımı Certbot’ta atlayabilir ve aşağıda gösterildiği gibi manuel olarak yapılandırabilirsiniz)
Otomatik Sertifika Yenilemeyi Etkinleştirme
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 olup olmadığını doğrulayın:
sudo systemctl status certbot.timerAyrıca bir deneme yenileme testi gerçekleştirebilirsiniz:
sudo certbot renew --dry-run4. Adım 2: Nginx’i HTTP’den HTTPS’ye Yönlendirmek için Yapılandırın
SSL sertifikanız yüklendikten sonra, Nginx’i tüm HTTP (port 80) trafiğini HTTPS (port 443) adresine kalıcı olarak yönlendirecek şekilde yapılandırmanız gerekir. Bu, SEO için doğru yönlendirme türü olan 301 Moved Permanently yönlendirmesi kullanılarak yapılır — bağlantı değerini sayfalarınızın HTTPS sürümüne aktarır.
Nginx Server Block Yapılandırmanızı Açın
Nginx site yapılandırmaları tipik olarak /etc/nginx/sites-available/ içinde depolanır. Etki alanınız için yapılandırma dosyasını açın:
sudo nano /etc/nginx/sites-available/example.comHTTP’den HTTPS’ye 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ı ile 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 server bloğunuz (port 443), Certbot tarafından muhtemelen otomatik olarak yapılandırılmış, ş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 rewrite yerine return 301 kullanılır?
> return 301 yönergesi, rewrite kuralından daha hızlı ve verimlidir. Nginx’in ek konum bloklarını işlemesini gerektirmeden yönlendirme yanıtını hemen döndürerek sunucu yükünü azaltır ve yanıt süresini iyileştirir.
Yönlendirme Yönergesini Anlama
| Bileşen | Açıklama |
|---|---|
listen 80 | Nginx, HTTP port 80 üzerinde gelen bağlantıları dinler |
listen [::]:80 | Port 80 üzerinde IPv6 desteğini etkinleştirir |
server_name | Bu bloğun hangi alan adlarına uygulanacağını tanımlar |
return 301 | Kalıcı yönlendirme verir (SEO için en iyisi) |
https://$host | Yönlendirmede orijinal ana bilgisayar adını korur |
$request_uri | Tam orijinal URI yolunu ve sorgu dizesini korur |
5. Adım 3: Nginx Yapılandırmanızı Test Edin
Yapılandırmanızı test etmeden önce Nginx’i asla yeniden yüklemeyiniz veya yeniden başlatmayınız. Yapılandırma dosyanızdaki 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 -tBaş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 successfulHerhangi bir hata görürseniz, çıktıyı dikkatle gözden geçirin. Nginx, sorunun tespit edildiği dosya ve satır numarasını gösterecektir. Yaygın sorunlar şunları içerir:
- Direktiflerin sonunda eksik noktalı virgüller
- Kapalı olmayan küme parantezleri
{} - SSL sertifikaları için yanlış dosya yolları
- Yinelenen
server_namegirişleri
Devam etmeden önce bildirilen hataları düzeltin.
6. Adım 4: Nginx’i Yeniden Yükleyerek Değişiklikleri Uygulayın
Yapılandırma testi başarılı olduktan 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 zarif bir şekilde uygular:
sudo systemctl reload nginxYeniden yükleme sonrasında Nginx’in doğru şekilde çalıştığını doğrulamak için:
sudo systemctl status nginxÇıktıda active (running) görmelisiniz.
7. Adım 5: Yönlendirmenin Çalışıp Çalışmadığını Doğrulayın
Nginx yeniden yüklendikten sonra, yönlendirmenin doğru şekilde çalışıp çalışmadığını doğrulamanın zamanı gelmiştir.
Yöntem 1: Tarayıcı Testi
- Web tarayıcınızı açın.
http://example.comadresine gidin (HTTPS değil HTTP kullanarak).- Tarayıcının sizi otomatik olarak
https://example.comadresine yönlendirdiğini gözlemleyin. - Adres çubuğunda 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.comDoğru şekilde 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-aliveDoğrulanacak önemli 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
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
Yönlendirme Döngüsü
Belirti: Tarayıcı “Çok fazla yönlendirme” hatası gösterir.
Neden: HTTPS sunucu bloğunuz aynı zamanda HTTP’ye geri bir yönlendirme tetikleyerek sonsuz bir döngü oluşturuyor.
Çözüm: return 301 yönergesinin yalnızca HTTP (port 80) sunucu bloğunda bulunduğundan ve HTTPS (port 443) bloğunda bulunmadığından emin olun.
Karışık İçerik Uyarıları
Belirti: Yönlendirme çalışsa bile kilit simgesi bir uyarı gösterir.
Neden: HTML sayfalarınız hala HTTP kaynaklarına (resimler, betikler, stil sayfaları) http:// URL’leri kullanarak başvuruyor.
Çözüm: Tüm dahili kaynak URL’lerini https:// veya protokol-bağımsız URL’ler (//) kullanacak şekilde güncelleyin. WordPress siteleri için Really Simple SSL gibi bir eklenti kullanın.
SSL Sertifikası Bulunamadı
Belirti: Nginx eksik sertifika dosyaları hakkında bir hata ile başlamayı başarısız olur.
Neden: ssl_certificate ve ssl_certificate_key içinde belirtilen yollar gerçek sertifika dosyası konumlarıyla eşleşmiyor.
Çözüm: Sertifika yollarını şu komutla doğrulayın:
sudo ls /etc/letsencrypt/live/example.com/Certbot Yenileme Başarısız Olur
Belirti: Otomatik yenileme bir bağlantı hatası ile başarısız olur.
Neden: Port 80 bir güvenlik duvarı tarafından engellenebilir ve Let’s Encrypt’in HTTP-01 sınamasının tamamlanmasını önler.
Çözüm: Port 80’in güvenlik duvarınızda açık olduğundan emin olun:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload9. Sonuç
Linux sunucunuzda Nginx kullanarak HTTP’yi HTTPS’ye yönlendirmek basit ancak kritik derecede önemli bir yapılandırma görevidir. Kalıcı bir 301 yönlendirme uygulayarak, sitenize nasıl erişirse erişsin her ziyaretçinin otomatik olarak şifreli, güvenli sürümü almasını sağlarsınız. Bu, hassas kullanıcı verilerini korur, ziyaretçi güvenini oluşturur, modern tarayıcı güvenlik gereksinimlerini karşılar ve ölçülebilir bir SEO faydası sağlar.
Bu kılavuzda ele alınan temel adımları özetlemek için:
- Certbot’u yükleyin ve Let’s Encrypt’ten ücretsiz bir SSL sertifikası alın.
- Nginx HTTP sunucu bloğunu yapılandırın ve
return 301yönlendirmesini HTTPS’ye ayarlayın. - Yapılandırmanızı test edin ve
sudo nginx -tile değişiklikleri uygulamadan önce kontrol edin. - Nginx’i yeniden yükleyin ve
sudo systemctl reload nginxkomutunu çalıştırın. - Yönlendirmeyi doğrulayın tarayıcınızı,
curlveya çevrimiçi bir yönlendirme denetleyicisini kullanarak. - Sertifika yenilemeyi izleyin ve SSL sertifikanızın hiçbir zaman süresi dolmasın.
En iyi sonuçlar için Nginx web sunucunuzu yüksek performanslı, güvenilir bir barındırma platformunda çalıştırın. AlexHost, tam kök erişimi, SSD NVMe depolaması ve esnek Linux dağıtımları ile VPS Barındırma sunmaktadır — Nginx destekli web siteleri barındırmak için idealdir. Önceden yapılandırılmış bir kontrol paneli ortamına ihtiyacınız varsa, cPanel VPS seçeneğini keşfedin veya iş akışınız için uygun yönetim arayüzünü bulmak için tüm mevcut VPS Kontrol Panelleri seçeneklerine göz atın. Yüksek trafikli veya kaynak yoğun uygulamalar için, Özel Sunucular altyapınızın talep ettiği maksimum performans ve izolasyonu sağlar.
SSL sertifikanızın geçerliliğini düzenli olarak denetleyin, Nginx’i güncel tutun ve güçlü ve güvenilir bir web varlığını korumak için sunucu güvenlik yapılandırmanızı periyodik olarak gözden geçirin.
tasarruf edin