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 “if” yönünü kullanarak trafiği yeniden yönlendirmekten kaçınmanız ö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:
sunucu80 default_server'ı dinle;
sunucu adı _;
301 https://$host$request_uri döndür;
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 döndür https://$host$request_uri - 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:
$ sudo systemctl nginx'i yeniden yükleNginx'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 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 ile arayabilirsiniz.conf, /usr/local/nginx/conf veya /usr/local/etc/nginx ve ardından bu dosyada aşağıdaki değişiklikleri yapın:
sunucu80 dinle;
sunucu_adı alan adı.com www.alan adı.com;
301 https://domain-name döndür.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.
sunucu_adı alan adı.com www.alan adı.com - alan adlarını belirtir. Bu nedenle, yönlendirmek istediğiniz web sitenizin alan adıyla değiştirin.
301 https://domain-name döndür.com$request_uri - 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:
sunucu80 dinle;
sunucu_adı alan adı.com www.alan adı.com;
301 https://domain-name döndür.com$request_uri;
sunucu
443 ssl http2'yi dinle;
sunucu_adı www.alan adı.com;
#… diğer kod
301 https://domain-name döndür.com$request_uri;
sunucu
443 ssl http2'yi dinle;
sunucu_adı alan adı.com;
#… diğer kod
Alan adını www gibi alan adınızla değiştirin.linux ipucu.com.
Sonuç
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.