Ubuntu 16.04’te Nginx Sunucu Bloklarını (Sanal Konaklar) Ayarlamak

Örnek Yapılandırma

Gösteri amacıyla Nginx sunucumuzla iki alan oluşturacağız. Bu kılavuzda kullanacağımız alan adları example.com ve test.com’dur .

Birinci Adım: Yeni Belge Kökü Dizinlerini Ayarlayın

Varsayılan olarak, Ubuntu 16.04’teki Nginx, varsayılan olarak etkin bir sunucu bloğuna sahiptir. Adresindeki bir dizinden belgeler sunmak için yapılandırılmıştır /var/www/html.

Bu tek bir site için iyi çalışıyor olsa da, birden fazla siteye hizmet verecek olursak ek dizinlere ihtiyacımız var. Biz düşünebiliriz /var/www/htmldizin istemci isteği diğer sitelerden herhangi eşleşmezse sunulacak varsayılan dizin.

/var/wwwSitelerimizin her biri için bir dizin yapısı oluşturacağız . Gerçek web içeriği htmlbu siteye özgü dizinler içindeki bir dizine yerleştirilecektir . Bu bize, sitelerimizle ilişkili başka dizinler oluşturmak için, htmlgerektiğinde dizine kardeş olarak ek esneklik sağlar .

Sitelerimizin her biri için bu dizinleri oluşturmamız gerekiyor. -pBayrak söyler mkdiryol boyunca gerekli üst dizinleri oluşturmak için:

sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/test.com/html

Artık dizinlerimize sahip olduğumuz için, web dizinlerinin sahipliğini normal kullanıcı hesabımıza atayacağız. Bu, onlara olmadan yazmamızı sağlayacaktır sudo.Notİhtiyaçlarınıza bağlı olarak, www-datakullanıcıya belirli erişime izin vermek için klasörlerin izinlerini veya sahipliğini yeniden ayarlamanız gerekebilir . Örneğin, dinamik siteler genellikle buna ihtiyaç duyacaktır. Belirli izinler ve sahiplik gereksinimleri tamamen yapılandırmanızın ne olduğuna bağlıdır. Kullanmakta olduğunuz teknoloji için önerileri izleyin.

$USERanda oturum açmış olduğumuz hesaba sahiplik atamak için çevresel değişkenini kullanabiliriz (olarak giriş yapmadığınızdan emin olun root). Bu, bu dizindeki içeriği kolayca oluşturmamızı veya düzenlememizi sağlayacaktır:

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

Web köklerimizin izinleri, umaskdeğerinizi değiştirmediyseniz zaten doğru olmalıdır , ancak şunu yazarak emin olabiliriz:

sudo chmod -R 755 /var/www

Dizin yapımız artık yapılandırılmıştır ve devam edebiliriz.

İkinci Adım: Her Site İçin Örnek Sayfalar Oluşturun

Artık dizin yapımızı kurduğumuz için, sitemizin her biri için varsayılan bir sayfa oluşturalım, böylece gösterecek bir şeylerimiz olacak.

index.htmlİlk etki alanınızda bir dosya oluşturun :

nano /var/www/example.com/html/index.html

Dosyanın içinde, şu anda hangi siteye erişmekte olduğumuzu gösteren gerçekten temel bir dosya oluşturacağız. Bunun gibi görünecek:/var/www/example.com/html/index.html

<html>
    <head>
        <title>Welcome to Example.com!</title>
    </head>
    <body>
        <h1>Success!  The example.com server block is working!</h1>
    </body>
</html>

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

İkinci sitemizin dosyası temelde aynı olacağı için, aşağıdaki gibi ikinci belge kökümüze kopyalayabiliriz:

cp /var/www/example.com/html/index.html /var/www/test.com/html/

Şimdi yeni dosyayı editörümüzde açabiliriz:

nano /var/www/test.com/html/index.html

İkinci etki alanımıza gönderme yapması için değiştirin:/var/www/test.com/html/index.html

<html>
    <head>
        <title>Welcome to Test.com!</title>
    </head>
    <body>
        <h1>Success!  The test.com server block is working!</h1>
    </body>
</html>

Tamamladığınızda bu dosyayı kaydedin ve kapatın. Artık iki alan adımızın ziyaretçilerine gösterilecek bazı sayfalarımız var.

Üçüncü Adım: Her Etki Alanı için Sunucu Bloğu Dosyaları Oluşturun

Şimdi sunmak istediğimiz içeriğe sahip olduğumuz için, Nginx’e bunun nasıl yapılacağını söyleyecek sunucu blokları oluşturmamız gerekiyor.

Varsayılan olarak, Nginx defaultkendi yapılandırmalarımız için şablon olarak kullanabileceğimiz bir sunucu bloğu içerir . İkinci alan adımız için kopyalayacağımız ilk alan adımızın sunucu bloğunu tasarlayarak başlayacağız ve gerekli değişiklikleri yapacağız.

İlk Sunucu Bloğu Dosyasını Yaratın

Yukarıda belirtildiği gibi, ilk dosya bloğumuzu config dosyasını varsayılan dosyaya kopyalayarak oluşturacağız:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

Şimdi, metin düzenleyicinizde oluşturduğunuz yeni dosyayı sudoayrıcalıklarla açın:

sudo nano /etc/nginx/sites-available/example.com

Yorumlanan satırları yok sayarak, dosya şuna benzer:/etc/nginx/sites-available/example.com

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }
}

Öncelikle, dinleme direktiflerine bakmamız gerekiyor. Sunucudaki sunucu bloklarımızdan sadece bir tanesi bu default_serverseçeneği etkinleştirebilir. Bu, eğer server_nametalep mevcut sunucu bloklarının hiçbiriyle uyuşmuyorsa hangi bloğun bir talep sunması gerektiğini belirtir . Ziyaretçiler sitenize etki alanı adınızla erişeceklerinden, bu durum gerçek dünya senaryolarında çok sık gerçekleşmemelidir.

Yönergeye default_serverseçenek listenekleyerek sitelerinizden birini “varsayılan” olarak atamayı seçebilir veya /var/www/htmlistenen ana bilgisayar bulunamazsa , dizinin içeriğine hizmet edecek olan varsayılan sunucu bloğunu etkin bırakabilirsiniz .

Bu kılavuzda, eşleşmeyen istekleri yerine getirmek için varsayılan sunucu bloğunu yerinde bırakacağız, bundan default_serverdolayı bu ve sonraki sunucu bloğunu kaldıracağız . Sunucu bloklarınızdan hangisinin sizin için anlamlı olduğu seçeneğini eklemeyi seçebilirsiniz./etc/nginx/sites-available/example.com

server {
        listen 80;
        listen [::]:80;

        . . .
}

Not

default_serverSeçeneğin yalnızca tek bir etkin dosyada etkin olduğunu kontrol ederek şunu yazabilirsiniz:

grep -R default_server /etc/nginx/sites-enabled/

Eşleşmeler dosyada belirtilmemişse (en soldaki sütunda gösterilmektedir), Nginx geçersiz bir yapılandırmadan şikayet edecektir.

Ayarlamamız gereken bir sonraki şey, rootdirektifle belirtilen belge köküdür . Oluşturduğunuz sitenin belge köküne gelin:/etc/nginx/sites-available/example.com

server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com/html;

}

Daha sonra, server_nameilk alan adımızın isteklerini eşleştirmek için düzenlememiz gerekiyor . Ayrıca eşleştirmek istediğimiz diğer adları da ekleyebiliriz. www.example.comGöstermek için bir takma ad ekleyeceğiz .

İşiniz bittiğinde, dosyanız şöyle görünür:/etc/nginx/sites-available/example.com

server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

Temel bir konfigürasyon için ihtiyacımız olan şey bu. Çıkmak için dosyayı kaydedin ve kapatın.

İkinci Sunucu Bloğu Dosyasını Oluştur

Artık ilk sunucu bloğu yapılandırmamıza sahip olduğumuza göre, bunu ikinci dosyamız için temel olarak kullanabiliriz. Yeni bir dosya oluşturmak için kopyalayın:

sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com

Yeni dosyayı sudodüzenleyicinizde ayrıcalıklarla açın :

sudo nano /etc/nginx/sites-available/test.com

Yine, daha önce başka bir yerde kullandıysanız, bu dosyadaki direktif default_serverseçeneğini kullanmadığınızdan emin olun listen. Yönergeyi rootikinci alan adınızın belge köküne işaret edecek şekilde ayarlayın ve server_nameikinci sitenizin alan adıyla eşleşecek şekilde ayarlayın (takma ad eklediğinizden emin olun).

İşiniz bittiğinde, dosyanız muhtemelen şöyle görünecektir:/etc/nginx/sites-available/test.com

server {
        listen 80;
        listen [::]:80;

        root /var/www/test.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name test.com www.test.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Dördüncü Adım: Sunucu Bloklarınızı Etkinleştirin ve Nginx’i Yeniden Başlatın

Artık bizim sunucu blok dosyalarımız var, onları etkinleştirmemiz gerekiyor. Bunu, bu dosyalardan sites-enabledNginx’in başlatma sırasında okuduğu dizine sembolik bağlantılar oluşturarak yapabiliriz .

Bu bağlantıları yazarak oluşturabiliriz:

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

Bu dosyalar şimdi etkin dizinde. Artık, listenyönetmeliklerine göre yanıt verecek şekilde yapılandırılmış üç sunucu bloğumuz var ve server_name(Nginx’in bu yönergeleri burada nasıl işlediği hakkında daha fazla bilgi edinebilirsiniz ):

  • example.com: İsteklerine yanıt verecek example.comvewww.example.com
  • test.com: İsteklerine yanıt verecek test.comvewww.test.com
  • default: 80 numaralı bağlantı noktasında diğer iki blokla eşleşmeyen isteklere yanıt verir.

Ek sunucu adları eklenmesinden kaynaklanabilecek olası bir karma bellek sorununu önlemek için, devam edeceğiz ve /etc/nginx/nginx.confdosyamızdaki tek bir değeri ayarlayacağız . Dosyayı şimdi aç:

sudo nano /etc/nginx/nginx.conf

Dosya içinde server_names_hash_bucket_sizeyönergeyi bulun . #Çizgiyi kaldırmak için simgeyi kaldırın :/etc/nginx/nginx.conf

http {
    . . .

    server_names_hash_bucket_size 64;

    . . .
}

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Ardından, Nginx dosyalarınızın hiçbirinde sözdizimi hatası olmadığından emin olmak için test edin:

sudo nginx -t

Hiçbir sorun bulunmazsa, değişikliklerinizi etkinleştirmek için Nginx’i yeniden başlatın:

sudo systemctl restart nginx

Nginx şimdi her iki etki alanı adınızı da sunuyor olmalı.

Beşinci Adım: Yerel Konak Dosyalarınızı Test Etmek İçin Değiştirin (İsteğe Bağlı)

Sahip olduğunuz etki alanı adlarını kullanmıyorsanız ve bunun yerine kukla değerleri kullanıyorsanız, Nginx sunucu bloğu yapılandırmanızı geçici olarak test etmenize izin vermek için yerel bilgisayarınızın yapılandırmasını değiştirebilirsiniz.

Bu, diğer ziyaretçilerin sitenizi doğru görmesine izin vermez, ancak her siteye bağımsız olarak erişebilmenizi ve yapılandırmanızı test etmenizi sağlayacaktır. Bu temelde, etki alanı adlarını çözmek için genellikle DNS’e giden istekleri ele alarak çalışır. Bunun yerine, etki alanı adlarını istediğimizde yerel bilgisayarımızın gitmesini istediğimiz IP adreslerini ayarlayabiliriz.NotYerel bilgisayarınızda, VPS sunucunuzu değil, bu adımlar boyunca çalıştığınızdan emin olun. Bunu yapmak için root erişiminiz, idari grubun bir üyesi olmanız veya sistem dosyalarını düzenleyebilmeniz gerekir.

Evde bir Mac veya Linux bilgisayardaysanız, aşağıdakileri yazarak gerekli dosyayı düzenleyebilirsiniz:

sudo nano /etc/hosts

Windows’daysanız, ana bilgisayar dosyanızı değiştirmek için talimatları burada bulabilirsiniz.

Sunucunuzun genel IP adresini ve sunucuya yönlendirmek istediğiniz alanları bilmeniz gerekir. Sunucumun genel IP adresinin olduğu varsayılırsa, dosyama 203.0.113.5ekleyeceğim satırlar şöyle görünür:/ Etc / ana

127.0.0.1   localhost
. . .

203.0.113.5 example.com www.example.com
203.0.113.5 test.com www.test.com

Bunun için herhangi bir istekleri müdahale edecek example.comve test.combiz aslında kullandığımız alan adına sahip değilse Bizim istediğimiz sizin sunucusuna gönderirler.

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Altıncı Adım: Sonuçlarınızı Test Edin

Artık hazırsınız, sunucu bloklarınızın doğru çalıştığını test etmelisiniz. Bunu, web tarayıcınızdaki alanları ziyaret ederek yapabilirsiniz:

http://example.com

Şuna benzeyen bir sayfa görmelisiniz:

Nginx ilk sunucu bloğu

İkinci alan adınızı ziyaret ederseniz, biraz farklı bir site görmelisiniz:

http://test.com
Nginx ikinci sunucu bloğu

Bu sitelerin ikisi de çalışırsa, Nginx ile iki bağımsız sunucu bloğunu başarıyla yapılandırdınız.

Bu noktada, hostsdosyanızı test etmek için yerel bilgisayarınızda ayarladıysanız, muhtemelen eklediğiniz satırları kaldırmak isteyeceksiniz.

Genel kullanıma açık bir site için sunucunuza etki alanı adı erişimine ihtiyacınız varsa, muhtemelen her bir siteniz için bir etki alanı adı satın almak isteyeceksiniz. Burada sunucunuzu işaret edecek şekilde nasıl ayarlanacağını öğrenebilirsiniz .

Sonuç

Artık aynı sunucudan barındırmak istediğiniz her alan için sunucu blokları oluşturma yeteneğine sahip olmalısınız. Donanımınız trafiği kaldırabildiği sürece, oluşturabileceğiniz sunucu bloklarının sayısı konusunda gerçek bir sınır yoktur.

Linux içinde yayınlandı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir