Nginx (“Engine-X” olarak telaffuz edilir) Linux tabanlı bir web sunucusu ve proxy uygulamasıdır. Nginx, web trafiğini yeniden yönlendirmek ve yönetmek için güçlü bir araçtır. Şifrelenmemiş HTTP web trafiğini şifreli bir HTTPS sunucusuna yönlendirmek için kolayca yapılandırılabilir.
Bu kılavuz, Nginx kullanarak HTTP’yi HTTPS’ye nasıl yönlendireceğinizi gösterecektir.
Önkoşullar
- Nginx çalıştıran bir Linux sunucusu
- olan bir kullanıcı hesabı sudo ayrıcalıklar
- Bir web sunucusunda uzaktan oturum açma (isteğe bağlı, yalnızca doğrudan web sunucunuzda çalışmıyorsanız gereklidir)
- Bir terminale/komut satırına erişim (Ctrl-Alt-T veya Ctrl-Alt-F2)
HTTP’den HTTPS’ye Yönlendirme
HTTP’den HTTPS’ye yönlendirmeyi zorlamak için Nginx yapılandırma dosyasını düzenlemeniz gerekir.
Çoğu durumda, dosyayı /etc/nginx/siteler kullanılabilir dizin. Bulunamadıysa, burada arayın: /etc/nginx/nginx.conf, /usr/yerel/nginx/confveya /usr/yerel/vb/nginx.
Nginx yapılandırma dosyasını bulduktan sonra, şu komutla dosyayı bir metin düzenleyicide açın:
sudo nano /etc/nginx/sites-available/server.conf
Konumu, yapılandırma dosyanızın gerçek konumu ve adıyla değiştirin.
Not: Uzaktan bağlanıyorsanız, önce SSL üzerinden giriş yaptığınızdan emin olun. Ayrıca, bir grafik arayüz kullanıyorsanız, terminal komutlarını kullanmak yerine dosya konumuna göz atabilirsiniz.
Yapılandırma dosyası düzenlenmek üzere açıldıktan sonra aşağıdaki kod bloklarından birini ekleyin. Düzenlemeyi bitirdikten sonra dosyayı kaydedin ve çıkın. Ardından, Nginx hizmetini aşağıdaki komutla yeniden başlatın:
sudo service nginx restart
Nginx, tüm HTTP trafiğini HTTPS’ye yönlendirir
Düzenlemek için Nginx yapılandırma dosyasını açın, ardından aşağıdaki kodu ekleyin:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
İşte komutların dökümü:
Listen 80
: Bu, sisteme Port 80’deki tüm HTTP trafiğini yakalama talimatı verir.Server_name _;
: Bu, herhangi bir ana bilgisayar adıyla eşleşirReturn 301
: Bu, tarayıcıya (ve arama motorlarına) bunun kalıcı bir yönlendirme olduğunu söylerhttps://$host$request_uri
: Bu, kullanıcının yazdığı şeyin HTTPS sürümünü belirten kısa bir koddur.
Düzenlemeden sonra, HTTP varsayılan sunucusu için tüm trafik HTTPS’ye yönlendirilir.
Not: Bu tek olmalı sunucu bloğu 80 numaralı Bağlantı Noktasında dinleme. (Sunucu bloğu, Nginx’te bir yapılandırma kodu birimidir. Bir ad ve süslü parantez ile işaretlenmiştir.)
Belirli Bir Siteyi Yönlendirme
Birden çok sunucunuz olabilir, ancak bunlardan yalnızca bazıları HTTPS gerektirebilir. Seçilen trafiği yeniden yönlendirmek için sunucu bloğunda sunucu adını belirtin:
server {
listen 80 default_server;
server_name my_app.com;
return 301 https://my_app.com$request_uri;
}
adı değiştir benim_uygulamam.com yönlendirmek istediğiniz sunucunun adı ile. Başka bir sunucu bloğu ekleyerek ek siteler de eklemek isteyebilirsiniz. Sadece kodu kopyalayın ve sunucunun adını kapatın.
Yalnızca SSL Bağlantılarını Kabul Et
Sunucunun yalnızca Port 443’te SSL bağlantılarını kabul edeceğinden emin olmak için bu kodu ekleyin:
server {
listen 443 ssl default_server;
server_name my_app.com;
}
server {
listen 443 ssl;
server_name my_website.com;
}
Bu kod bloğu iki web sitesi kuracak, benim_uygulamam.com Ve web sitem.com, yalnızca SSL bağlantılarını kabul etmek için. Ek sunucu blokları kullanarak ek siteler ekleyebilirsiniz.
Nginx Sayfa Yönlendirmeleri
301 (kalıcı) veya 302 (geçici) yeniden yönlendirmeyi hızla yönetmek için yeniden yazma kodunu kullanabilirsiniz:
Location /index.html {
rewrite ^/oldURL$ https://www.your_domain.com/newURL redirect;
}
Çoğu zaman, konum index.htmlancak herhangi bir yolu/kalıp belirtebilirsiniz.
Not edin rewrite
komutu yalnızca 301 veya 302 yönlendirmeleri ile kullanılmalıdır.
Nginx ile Alan Adı Nasıl Yönlendirilir?
Özel bir uzantıdan (.biz veya .net gibi) standart bir .com adresine geçiş yaptıysanız bu kullanışlıdır. Eski bir alan adından yeni bir alan adına yönlendirme yapmak için de kullanılabilir.
server {
listen 80;
listen 443 ssl;
server_name www.old_company.com;
return 301 $scheme://www.new_company.com$request_uri;
}
Çoğu durumda, return
komutu, yeniden yazma komutuna tercih edilir.
www web sitesinden www olmayan web sitesine yönlendirme
Bu işlem, standart bir sayfa yönlendirmesine benzer:
server {
server_name www.new_company.com;
return 301 $scheme://new_company.com$request_uri;
}
Trafiği Yeniden Yönlendirme Nedenleri
HTTP trafiğini HTTPS’ye yönlendirmenin birkaç nedeni vardır. Şunları yapmanız gerekebilir:
- Daha güvenli, şifreli bir bağlantıyı zorlayın.
- İyi bir SEO sıralamasına sahip bir sayfa tutun, ancak trafiğini yeni bir sayfaya gönderin.
- Trafiği “bakım altında” sayfasına bildirin ve geçici olarak gönderin.
- Bir web sitesinden diğerine, yani bir şirket birleşmesinden sonra kalıcı olarak trafik gönderin.
Çözüm
Artık Nginx’te HTTP’yi HTTPS’ye nasıl yönlendireceğinizi biliyorsunuz. Yapılandırma dosyasını düzenleyerek, belirli bir hedeften farklı bir siteye trafik gönderebilir ve Nginx SSL sertifikalarının kullanımını zorunlu kılabilirsiniz. Bu, kullanıcı deneyimini bozmadan web sitenizdeki değişiklikleri güvenli bir şekilde yönetmenize yardımcı olur.