Nginx URL’leri Yeniden Yönlendirme Nginx, genellikle ters proxy, web sunucusu ve yük dengeleyici olarak kullanılan hafif bir web sunucusudur. Nginx, varsayılan olarak pek çok kullanışlı özellik sunar ve kurulurken modül olarak daha fazlası eklenebilir. Bu kılavuz, URL’leri farklı yönlere yönlendirmek için Nginx’in nasıl kullanıldığını göstermeyi amaçlamaktadır. Nginx, URL’leri yönlendirmek için birçok özellik sağlasa da, bu kılavuz URL yönlendirmesinde yalnızca temel olanları öğretmek istediğinden, bunların bir bölümünü kullanır. Bu makalede ele alınan alanlar, güvenli olmayan (80 numaralı bağlantı noktası) URL’leri güvenli sürümüne yönlendirir, bir isteği IP’ye bir etki alanı adına yönlendirir ve son olarak da diğer tüm alt etki alanlarını, ana etki alanına yönlendirir.
Gereksinimler
Her şeyden önce, bu kılavuz kullanıcının bilgisayara uygun bir SSH istemcisinin yüklü olduğunu varsayar, devam etmez ve istemci olarak Putty’yi yüklerse aşağıdaki komutları kullanır. Ek olarak, Nginx’e sahip olmak için Nano editörü de gereklidir.
- Nano metin düzenleyicisini kurmak için aşağıdaki komutları yazın. İlk komut depolardan en son paketleri almaya yardımcı olur ve ikinci komut nano metin editörünün en son sürümünü yükler.
sudo apt-get update
sudo apt-get install nano
- Terminal penceresinde, geçerli dizini nginx dizinine değiştirmek için aşağıdaki komutu yazın.
cd /etc/nginx/sites-available
- Etki alanının ayarlarını değiştirmek için şimdi nano varsayılan veya etki alanı ile ilişkilendirilmiş dosya adını yazın.
- Şu andan itibaren devam etmek için aşağıdaki bölümlerden birini takip edin.
HTTP’den Yönlendirme (Port 80)
Google, Bing ve diğer birçok arama motoru, günümüzde şifreli bağlantıya sahip web sitelerini tercih etmektedir. İstemci ile sunucu arasındaki bağlantı şifreli olduğunda, söz konusu bağlantı üzerinden iletilen veriler güvenlidir ve bu nedenle üçüncü taraflar bu verilere erişemez. Bağlantı şifrelenmediğinde, bu tür siteler güvensizdir ve bu nedenle verilerin güvenliğini tehlikeye atar. Güvensiz web sitesi, halka hizmet vermek için 80 numaralı bağlantı noktasını kullanır. Ne yazık ki, varsayılan olarak, web tarayıcısı, 80 nolu bağlantı noktası ile bağlantı kurmaktadır, web sunucusu, istemcinin varsayılan olarak istediği şeyi varsaymaktadır ve bu nedenle isteğin güvenli sürümüne yönlendirilmesi gerekmektedir. Nginx ile halletmek için birçok yol vardır.
1. Yöntem
Geçerli etki alanı adı mevcutsa ve istemcilerden istek alıyorsa, aşağıdaki kod parçacığını kullanarak başka bir etki alanına yönlendirilebilir. Basitçe varsayılan dosyaya veya etki alanının dosyasına kopyalayın.
Varsayılan sunucu parametresi, bu sunucu bloğunun varsayılan sunucu olduğunu belirtir, bu nedenle bağlantı noktası 80’e yapılan tüm istekler bu sunucu bloğunu ilk önce varsayılan olarak yürütür ve ardından izler. Parantez, ipv6 ağlarından gelen istekleri de yakaladığını belirtir. 310 dönüşü, yeniden yönlendirmenin kalıcı olduğunu ve böylece bağlantı suyunun onunla birlikte geçtiğini belirtir.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name domain.com www.domain.com;
return 301 https://domain.com$request_uri;
}
2. Yöntem
Geçerli sunucunun kendisine bağlı bir web sitesi yoksa ve gereksinim herhangi bir isteği bağlantı noktası 80’e yönlendiriyorsa, aşağıdaki sunucu bloğu kullanılabilir. Daha önce belirtildiği gibi varsayılan dosyaya kopyalayın. Burada _ (alt çizgi) herhangi bir etki alanını belirtir. Daha önce olduğu gibi, default_server parametresi, isteğe bağlı öznitelikler gibi parantez (IPv6 adresleri için) burada da kullanılabilir.
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
3. Yöntem
Aşağıdaki kod parçacığı, bağlantının şifrelenmemiş olup olmadığını, yani bağlantı noktası 80’in istekleri aldığı anlamına gelir, daha sonra belirtilen etki alanının güvenli bir sürümüne yönlendirilir. Bu, {} bloğundaki herhangi bir yere, ancak sunucu_adı parametresinden sonra kopyalanmalıdır.
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
IP Adresinden Yönlendirme
Paylaşılan bir ana bilgisayardan farklı olarak, hem adanmış sunucular hem de sanal özel sunucular her zaman kendisine atanmış bir IP adresine sahiptir. Eğer web sunucusu alt çizgi ile Nginx ile konfigüre edilmişse (yani sunucu her isteği işliyorsa), IP adresine yapılan herhangi bir talep web sitesine de erişim kazanır. Bir IP adresi üzerinden web sitesine erişebilmek, her web yöneticisinin çeşitli sebeplerden dolayı istediği bir şey değildir. Öte yandan, her istek işlenirse, kötü niyetli kullanıcılar herhangi bir rasgele etki alanını web sunucusuyla ilişkilendirebilir; bu, markanın veya işletmenin adı için iyi değildir ve bu nedenle yalnızca belirli etki alanlarına veya IP adresi. Bu segment, böyle durumlarda web sunucusunun IP adresine yapılan taleplerin nasıl işlendiğini gösterir.
Yukarıda belirtildiği gibi, aşağıdaki kod parçasını Nginx’in varsayılan dosyasına kopyalayın (ön gereksinimler, 3. adım). Server_name parametresinde alanın adını kullanmak yerine, sadece sunucunun IP adresini kullanın, daha sonra bir sonraki satırda isteğin yönlendirildiği yere “return 301 domain” kullanın. Şimdi bu özel IP adresine bir istek sunucuya alındığında, belirtilen etki alanına yönlendirilir. Buna en iyi örnek, rastgele bir kullanıcının siteye doğrudan erişmek için web sunucusunun IP’sini yazmasıdır. Aşağıdaki kod pasajı varsayılan dosyada hiçbir yerde belirtilmezse, IP’ye yapılan herhangi bir istek işlenmez; dolayısıyla kullanıcılar IP adresine web sitesine erişemezler.
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 192.168.1.1;
return 301 https://nucuta.com;
}
Başka bir Alandan Yönlendirme
Bu çözüm, bu kılavuzun ilk çözümüyle aynıdır, ancak istekleri web sunucusunun 443 bağlantı noktasına da yönlendirir; bunun anlamı hem güvenli, hem de güvenli olmayan isteklerin belirtilen parametreye geri dönüş parametresinde yönlendirilmesidir. Daha önce de belirtildiği gibi, bunu basitçe varsayılan dosyaya kopyalayın.
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name domain.com www.domain.com;
return 301 https://nucuta.com;
}
Sonlandırma
Yukarıdaki çözümlerden birini takip ettikten sonra, yapılandırmasını etkinleştirmek için nginx dosyasının derlenmesi gerekir. Bununla birlikte, varsayılan dosya derlemeden önce test edilmelidir, çünkü konfigürasyonda bir hata varsa web sunucusunun çökmesini önler.
- Varsayılan yapılandırma dosyasını test etmek için Linux terminalinde aşağıdaki komutu kullanmanız yeterlidir, sonuç bir sonraki adıma geçilmesi iyidir.
- Nginx web sunucusunu yeniden başlatmak için aşağıdaki komutlardan birini kullanın. Komut, Linux dağıtımının adına ve sürümüne bağlıdır.
sudo systemctl restart nginx
sudo service nginx reload
sudo /etc/init.d/nginx reload