Nginx VirtualHost (Server Blocks) Nedir?

How to Create an Nginx Virtual Host (AKA Server Blocks) - KeyCDN Support

Nginx, HTTP sunucusu, geliştiriciler için esneklik, güç ve yaygın destek sunan popüler bir açık kaynaklı web sunucusudur. Bu modüler tasarım içinde, sanal ana bilgisayar adı verilen bağımsız bir site veya etki alanı oluşturabilirsiniz .

Bir Nginx örneği, sanal ana bilgisayarları kullanarak birden çok web sitesine hizmet verebilir. Nginx kullanılarak yapılandırılan her etki alanı veya bağımsız site, ziyaretçiyi o sitenin bilgilerini içeren belirli bir dizine yönlendirecektir. Bu, ziyaretçiye aynı sunucunun diğer sitelerden de sorumlu olduğu belirtilmeden yapılır. Bu şema, sunucunuz yükü kaldırabildiği sürece herhangi bir yazılım sınırı olmaksızın genişletilebilir.

Bu kılavuzda, Nginx sanal ana bilgisayarları kuracağız. 

Daha fazla bilgi için bakınız:

https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/

Prerequisites

  • Ubuntu 14x -22x
  • superuser

Nginx sunucusu üzerinde sanal konakları yapılandırmakla bu konak isimleri için sihirli bir şekilde DNS kayıtlarının da oluşturulmasını sağlamış olmazsınız. Bu isimler için ilgili DNS kayıtlarında sizin IP adresinize çözümlenen A kayıtlarının olması gerekir, yoksa sitenize kimse erişemez. Sitelere erişimi yerel olarak denemek isterseniz, bu girdileri hosts dosyanıza yazabilirsiniz. Fakat bu sadece sizin makinenizde çalışır. Yerel ağınızdaki her makinenin hosts dosyasına bu girdileri yazarak yerel ağdan erişimi bu yolla sağlayabilirsiniz ama dış ağdan gelecek ziyaretçileriniz için DNS kayıtlarınızın olması şarttır.

Nginx VirtualHost Oluşturma

Paket listesini güncelleyin ve resmi Ubuntu depoları aracılığıyla nginx kurulumunu gerçekleştirin.

sudo apt-get update && sudo apt install nginx -y 

Nginx harici olarak iletişim kurduğundan, Güvenlik Duvarınızın istisnaları arasına eklenmelidir. UFW kullanılması durumunda, şunu yazarak Nginx ile İstemci arasında çift yönlü iletişime izin verin.

Güvenlik Duvarınız aktif değilse bu adımı geçebilirsiniz.

sudo ufw allow 'Nginx Full' 

Akabinde sistemimizde nginx olduğunu doğrulayalım.

nginx -v && systemctl status nginx 

Birden fazla web sitesini barındırmak istiyorsanız, her web sitesi için, sanal ana bilgisayarın web üzerinden erişilebilir olmasını sağlayacak yapılandırma dosyasının doğru ayarlanması koşuluyla, web sitesi sayısı kadar klasörün nasıl oluşturulacağını görmek kolaydır.  Bu nedenle /var/www içine gidin ve siteniz için klasör oluşturun. Size kolaylık sağlamak için, ilgili alan adını her klasöre atayabilirsiniz.

sudo mkdir -p /var/www/mehmetoz.com/html/

Mevcut kullanıcınızı bu klasörlerin sahipliklerini tanımlayalım. 

sudo chown -R $USER:$USER /var/www/mehmetoz.com/html

Dosyaları okumak ve düzenlemek için doğru izinleri atayın.

sudo chmod -R 755 /var/www/mehmetoz.com 

Bu klasörün içeriğine bağlanmaya çalışırken görsel bir geri bildirim almak için etki alanınızda bir index.html dosyası oluşturun.

sudo vim /var/www/mehmetoz.com/html/index.html

Aşağıdaki HTML kodunu metin düzenleyiciye kopyalayın.

<html>
  <head>
    <title>HOŞGELDİNİZ</title>
  </head>
  <body>
    <h1>mehmetoz.com!</h1>
  </body>
</html> 

Dosyayı kayıt edin ve çıkın.

:wq!

Artık sunmak istediğimiz içeriğe sahip olduğumuza göre, Nginx'e bunu nasıl yapacağını söyleyecek sunucu bloklarını oluşturmamız gerekiyor. Varsayılan olarak, Nginx, default kendi yapılandırmalarımız için şablon olarak kullanabileceğimiz adlı bir sunucu bloğu içerir. İlk etki alanımızın sunucu bloğunu oluşturmadan önce default şablonu anlamaya çalışalım.

Yorumlanan satırları yok sayarak, default dosyası şuna benzer.

grep -v -e '^[[:space:]]*$' -e "#" /etc/nginx/sites-available/default 

Yukarıdaki satırlardan kısaca bahsedelim.

  • listen 80; Dinleme bağlantı noktasını belirtin
  • listen [::]:80; IPv6 için aynı şey
  • root /var/www/domain-name.com/html; Web site dosyalarının yolu
  • index index.html index.htm; Adreste yalnızca alan adı belirtilmişse görüntülenecek dosyalar
  • server_name; Sanal Ana Bilgisayarın adına atıfta bulunur.

Şimdi oluşturacağım projenin adreslerini ve yollarını tekrar hatırlayalım.

  • Uygulama adı: virtualhost
  • Uygulama Yolu: /var/www/mehmetoz.com
  • Uygulama Adresi: mehmetoz.com

Şimdi virtualhost dosyamızı oluşturup, editör ile açıp düzenleyelim.

sudo vim /etc/nginx/sites-available/mehmetoz.com

Aşağıdaki içeriği yeni açılan düzenleyiciye yapıştırın, her seferinde mehmetoz.com'u  alan adınızla değiştirmeye dikkat edin. 

server {
listen 80; 
listen [::]:80;
root /var/www/mehmetoz.com/html;
index index.html index.htm;
server_name mehmetoz.com;
location / {
try_files $uri $uri/ =404;
}
} 

Dosyayı kayıt edin ve çıkın.

:wq!

Sanal ana bilgisayarı etkinleştirmek için sitelerin etkin olduğu dizindeki yapılandırmaya sembolik bir bağlantı oluşturmanız gerekir.

sudo ln -s /etc/nginx/sites-available/mehmetoz.com /etc/nginx/sites-enabled/

Bir sanal ana bilgisayarı devre dışı bırakmak için sitelerin etkin olduğu klasörden sembolik bağlantıyı kaldırın. Sunucunun IP adresine erişirken standart bir web sayfasının döndürülmesini devre dışı bırakmak için, varsayılan yapılandırmanın bağlantısını silmeniz yeterlidir.

sudo unlink /etc/nginx/sites-enabled/default 

Her şeyin nginx tarafından sağlanan söz dizimini kullandığını doğrulamak için aşağıdaki komut satırını kullanın.

sudo nginx -t

Cevap olarak Sözdizimi OK döndürülmelidir.

Eğer syntax hatası alırsanız. VirtualHost dosyanızda boşluklara ve yazım hatasını kontrol ediniz.

 Ardından değişiklikleri uygulamak ve web sunucusunun yapılandırma dosyanızı kullanmasını sağlamak için Nginx'i yeniden başlatalım.

sudo systemctl restart nginx

Alan adımız dış dünyaya açık olmadığı için, içeride test edeceğim. Bilgisayarımızın alan adını tanıması için, hosts dosyamıza bir kayıt ekleyelim. Aşağıdaki yola gidelim ve hosts dosyasını açalım.

hosts dosyasını masaüstüne alabilir veya notepad ++ gibi bir editör ile yönetici olarak açıp düzenleyebilirsiniz.

C:\Windows\System32\drivers\etc 

Web sunucu ip adresini ve alan adını ekleyiniz.

192.168.168.130 mehmetoz.com 

Son olarak, alan adımızın çözümlenebildiğini doğrulayalım. 

Sanal Ana Bilgisayarın yapılandırması başarılıysa, etki alanı klasöründe önceden oluşturulmuş HTML sayfasında yer alan mesaj gösterilecektir.

Blog'a Dön