Nginx HTTP'yi HTTPS'ye Yönlendiriyor

Nginx Redirect Http Https



Engine x olarak telaffuz edilen Nginx, ücretsiz, açık kaynaklı Linux tabanlı yüksek performanslı bir web ve internetteki en büyük web sitesi trafiğinin yükünü yönetmekten ve yönetmekten sorumlu bir ters proxy sunucusudur. Nginx, daha az güvenli veya şifrelenmemiş HTTP web trafiğini şifreli ve güvenli bir HTTPS web sunucusuna yönlendirmek için sisteminizde kolayca yapılandırılabilen güçlü bir yeniden yönlendirme aracıdır. Sistem yöneticisi veya geliştiriciyseniz, Nginx sunucusunu düzenli olarak kullanıyorsunuz.

Bu yazıda, Nginx'te web trafiğini HTTP'den güvenli bir HTTPS'ye nasıl yönlendireceğimiz üzerinde çalışacağız.







Yanıtlar ve istekler, HTTP'de düz metin biçiminde döndürülürken, HTTPS, istemci ve sunucu sistemi arasındaki iletişimi şifrelemek için SSL/TLS kullanır. Bu nedenle, birçok nedenden dolayı HTTPS, aşağıda listelenen HTTP üzerinden kullanılır:



  • Her iki yönde de istemci-sunucu arasındaki tüm veriler şifrelenir. Ancak, ele geçirilirse kimse hassas bilgilere erişemez.
  • HTTPS kullandığınızda, Google Chrome ve diğer tarayıcılar web sitenizin alan adını güvenli olarak kabul eder.
  • HTTPS sürümü, HTTP/2 protokolünü kullanarak belirttiğiniz web sitesi performansını iyileştirir.
  • Web sitenizin etki alanını HTTPS aracılığıyla sunarsanız, web sitesi tüm HTTPS güvenli web sitelerini tercih ettiğinden Google'da daha iyi sıralanır.

Her site sürümü için ayrı bir sunucu bloğunda trafiği HTTP'yi Nginx'te HTTPS'ye yönlendirmek tercih edilir. Ayrıca, sunucunun olağandışı davranışına neden olabilecek şekilde, trafiğin yeniden yönlendirilmesinden kaçınılması önerilir.



Tüm trafiği HTTP'den HTTPS'ye yönlendirin

Tüm trafiği HTTP'den HTTPS sürümüne yönlendirmek için aşağıdaki değişiklikleri Nginx yapılandırma dosyasına ekleyin:





sunucu {
dinlemek 80default_server;
sunucu adı _;
dönüş 301https://$ana bilgisayar$request_uri;
}

Aşağıda, yukarıda belirtilen her terimi detaylandırdık:

Listen 80 default_server – bu, sisteminizin Port 80'deki tüm HTTP trafiğini yakaladığını bildirir.
Sunucu_adı _ – herhangi bir ana bilgisayar adıyla eşleşecek etki alanıdır.



301 https://$host$request_uri döndür - bu, arama motorlarınıza onu kalıcı olarak yeniden yönlendirdiğini söyler. $Host değişkeninin alan adlarını tuttuğunu belirtir.

Yapılandırma ayarlarını değiştirdikten sonra, Nginx hizmetlerini sisteminize yeniden yüklemeniz gerekir. Bu nedenle, aşağıdaki komutu kullanarak Nginx hizmetlerinizi yeniden yükleyin:

$sudosystemctl nginx'i yeniden yükle

Nginx'te Belirtilen etki alanı için HTTP'yi HTTPS sürümüne yönlendirin

Alan adınıza SSL sertifikasını yükledikten sonra, bu alan adı için iki sunucu bloğu seçeneğiniz olacaktır. Bir blok, 80 numaralı bağlantı noktasını dinleyen HTTP sürümü içindir ve ikinci sürüm, 443 numaralı bağlantı noktasındaki HTTPS'dir. Ancak, tek bir web sitesi etki alanını HTTP'den HTTPS'ye yeniden yönlendirmek için Nginx yapılandırmasını açmanız gerekir. Bu yapılandırma dosyasını /etc/nginx/sites-available dizininde bulabilirsiniz. Her durumda, bu dosyayı bulamadıysanız, /etc/nginx/nginx.conf, /usr/local/nginx/conf veya /usr/local/etc/nginx ile onu arayabilir ve ardından işlemi gerçekleştirebilirsiniz. bu dosyada aşağıdaki değişiklikler:

sunucu {
dinlemek 80;
sunucu adı domain-name.com www.domain-name.com;
dönüş 301https://domain-name.com$request_uri;
}

Yukarıdaki kodu satır satır anlayalım.
80 Dinle - 80 numaralı bağlantı noktasını kullanarak, sunucu belirtilen etki alanındaki tüm gelen bağlantıları dinler.

Server_name domain-name.com www.domain-name.com – alan adlarını belirtir. Bu nedenle, yönlendirmek istediğiniz web sitenizin alan adıyla değiştirin.

301 https://domain-name.com$request_uri döndür - trafiği sitenin HTTPS sürümüne taşır. $request_uri değişkeni, bağımsız değişkenlerin de dahil edildiği tam orijinal istek URI'si için kullanılır.

Aşağıdaki yöntemi kullanarak, trafiği HTTPS www sürümüne, sitenin www olmayan sürümüne yönlendirebilirsiniz. Hem www olmayan hem de www olmayan sürümler için ayrı bir sunucu bloğunda yeniden yönlendirme oluşturulması önerilir.

Bir örnekle açıklayalım. www HTTPS isteklerini www olmayan sürüme yönlendirmek istiyorsanız, aşağıdaki yapılandırmayı izlemelisiniz:

sunucu {
dinlemek 80;
sunucu adı domain-name.com www.domain-name.com;
dönüş 301https://domain-name.com$request_uri;
}
sunucu {
dinlemek 443 ssl http2;
sunucu adı www.domain-name.com;
# . . . diğer kod
dönüş 301https://domain-name.com$request_uri;
}
sunucu {
dinlemek 443 ssl http2;
sunucu adı alan-adi.com;

# . . . diğer kod
}

Etki alanı adını, www.linuxhint.com gibi etki alanınızla değiştirin.

Çözüm

Nginx sunucusundaki HTTP sürümünden HTTPS'ye trafiğin nasıl yönlendirileceğini tartıştık. Nginx yapılandırma dosyası ayarını değiştirerek, belirli bir etki alanı için trafiği kolayca HTTPS'ye yönlendirebilir veya tümünü yeniden yönlendirebilirsiniz. Bu yazıda bahsettiğimiz bu yöntem, kullanıcı deneyiminde herhangi bir değişiklik yaparak web sitenizi daha güvenli hale getirmenize yardımcı olabilir.