15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
31.10.2024

Ubuntu’da Nginx’te Sanal Konakları Nasıl Yapılandırılır

Nginx’te sanal hostları yapılandırmak, her biri kendi alan adı, kök dizini ve bağımsız yapılandırmaya sahip tek bir sunucuda birden fazla web sitesini barındırmak için en güçlü tekniklerden biridir. Nginx bunu server blocks aracılığıyla işler — web sunucusunun her alan adı için isteklere nasıl yanıt vereceğini tanımlayan esnek, hafif yapılandırma birimleri.

İster kişisel bir portföy yönetiyor, ister müşteri web sitelerini çalıştırıyor, ister çok kiracılı bir uygulamayı ölçeklendiriyor olun, bu kılavuz Ubuntu’da Nginx sanal hostlarını ayarlamak için eksiksiz, üretime hazır bir adım adım rehber sağlar. Dizin yapısını, server block yapılandırmasını, siteleri etkinleştirmeyi, SSL/HTTPS kurulumunu ve sorun gidermeyi ele alacağız — sıfırdan tam işlevsel çok siteli bir Nginx sunucusuna gitmek için ihtiyacınız olan her şey.

> Takip etmek için güvenilir bir Ubuntu sunucusu arıyor musunuz? AlexHost’un VPS Hosting planları tam root erişimi, SSD depolaması ve anında dağıtımı sağlar — bu tam kullanım durumu için mükemmeldir.

İçindekiler Tablosu

  1. Ön Koşullar
  2. Her Web Sitesi için Dizinleri Ayarlayın
  3. Örnek HTML İçeriği Oluşturun
  4. Sanal Host Yapılandırma Dosyaları Oluşturun
  5. Sanal Hostları Etkinleştirin
  6. Nginx Yapılandırmasını Test Edin
  7. Değişiklikleri Uygulamak için Nginx’i Yeniden Başlatın
  8. Web Sitelerinize Erişin
  9. Let’s Encrypt ile HTTPS’yi Etkinleştirin (Önerilir)
  10. Yaygın Sorunları Giderme
  11. Sonuç

Ön Koşullar

Başlamadan önce, aşağıdaki koşulların karşılandığından emin olun:

Sunucunuza Nginx Yüklü

Nginx henüz yüklü değilse, Ubuntu sunucunuzda aşağıdaki komutları çalıştırın:

sudo apt update
sudo apt install nginx

Yüklemeyi doğrulayın ve hizmetin çalıştığını kontrol edin:

sudo systemctl status nginx

Çıktıda active (running) görmelisiniz. Görmüyorsanız, manuel olarak başlatın:

sudo systemctl start nginx
sudo systemctl enable nginx

Sunucunuza İşaret Eden Alan Adları

Her sanal host, sunucunuzun genel IP adresine çözümlenen bir alan adı gerektirir. DNS ayarlarınızda sunucunun IP’sine işaret eden A kayıtları oluşturmanız gerekecektir.

> Alan adına mı ihtiyacınız var? AlexHost aracılığıyla Alan Adı Kaydı yapın ve DNS kayıtlarını doğrudan kontrol panelinden yönetin.

Yerel test amaçları için, /etc/hosts dosyasını düzenleyerek DNS’yi tamamen atlayabilirsiniz (Adım 7’de ele alınmıştır).

Gerekli İzinler

Dizinler oluşturmak, yapılandırma dosyalarını düzenlemek ve Nginx hizmetini yönetmek için Ubuntu sunucunuzda sudo ayrıcalıklarına ihtiyacınız olacaktır.

Adım 1: Her Web Sitesi için Dizinleri Ayarlayın

Sunucunuzda barındırılan her web sitesinin, web dosyalarını depolamak için kendi izole dizinine sahip olması gerekir. Bu ayrım projelerinizi düzenli tutar ve yapılandırma çatışmalarını önler.

Bu kılavuzda, iki örnek alan adını yapılandıracağız: example1.com ve example2.com. Bunları tüm kılavuz boyunca gerçek alan adlarınızla değiştirin.

Web Kök Dizinlerini Oluşturun

sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html

-p bayrağı gerektiğinde tüm ara dizinleri oluşturur.

Doğru Sahipliği Atayın

Bu dizinlerin sahipliğini Nginx’in çalıştığı sistem kullanıcısı olan www-data öğesine verin:

sudo chown -R www-data:www-data /var/www/example1.com/html
sudo chown -R www-data:www-data /var/www/example2.com/html

Bu, Nginx’in bu dizinlerden dosyaları sunmak için gerekli okuma izinlerine sahip olmasını sağlar.

Dizin İzinlerini Ayarlayın

sudo chmod -R 755 /var/www

755 izni, sahibinin tam okuma/yazma/yürütme erişimine sahip olduğu, gruplar ve diğer kullanıcıların okuma ve yürütme erişimine sahip olduğu anlamına gelir — genel olarak sunulan web içeriği için uygun.

Adım 2: Örnek HTML İçeriği Oluşturun

Her sanal hostun doğru çalışıp çalışmadığını doğrulamak için, her site için basit bir index.html dosyası oluşturun.

example1.com için

echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html

example2.com için

echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html

Bu yer tutucu sayfalar, Nginx’in istekleri her alan adı için doğru belge köküne yönlendirdiğini doğrulayacaktır.

Adım 3: Sanal Host Yapılandırma Dosyaları Oluşturun

Nginx, site yapılandırma dosyalarını /etc/nginx/sites-available/ içinde depolar. Her dosya bir server block tanımlar — Apache sanal hostunun Nginx eşdeğeri. Etkinleştirilen siteler daha sonra /etc/nginx/sites-enabled/ içine sembolik olarak bağlanır.

example1.com için Yapılandırma

Yeni bir yapılandırma dosyası oluşturun:

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

Aşağıdaki server block’u ekleyin:

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

    server_name example1.com www.example1.com;

    root /var/www/example1.com/html;
    index index.html index.htm;

    access_log /var/log/nginx/example1.com.access.log;
    error_log  /var/log/nginx/example1.com.error.log;

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

Dosyayı kaydedin ve kapatın (Ctrl+X, ardından Y, ardından Enter).

example2.com için Yapılandırma

İkinci bir yapılandırma dosyası oluşturun:

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

Aşağıdaki server block’u ekleyin:

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

    server_name example2.com www.example2.com;

    root /var/www/example2.com/html;
    index index.html index.htm;

    access_log /var/log/nginx/example2.com.access.log;
    error_log  /var/log/nginx/example2.com.error.log;

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

Temel Yönergeler Açıklandı

YönergeAmaç
listen 8080 numaralı bağlantı noktasında gelen HTTP bağlantılarını dinler
listen [::]:8080 numaralı bağlantı noktasında IPv6 desteğini etkinleştirir
server_nameBu bloğun işlediği alan adlarını tanımlar
rootBelge kökünü ayarlar — web sitesi dosyalarının depolandığı yer
indexBir dizin istendiğinde sunulacak varsayılan dosyayı belirtir
try_filesİstenen dosyayı sunmaya çalışır; bulunamazsa 404 döndürür
access_log / error_logDaha kolay hata ayıklama için site başına ayrı günlük dosyaları

Adım 4: Sanal Hostları Etkinleştirin

Nginx, sites-available öğesinden sites-enabled öğesine sembolik bağlantılar oluşturarak siteleri etkinleştirir. Bu tasarım, yapılandırmaları hemen etkinleştirmeden hazırlamanıza olanak tanır.

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

Varsayılan Siteyi Devre Dışı Bırakın (İsteğe Bağlı ancak Önerilir)

Nginx’in varsayılan yer tutucu sayfasının müdahale etmesini önlemek istiyorsanız, bunu devre dışı bırakın:

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

Sembolik bağlantıyı yeniden oluşturarak her zaman yeniden etkinleştirebilirsiniz.

Adım 5: Nginx Yapılandırmasını Test Edin

Nginx’i yeniden başlatmadan önce, her zaman yapılandırma dosyalarınızı söz dizimi hataları açısından doğrulayın. Yanlış yapılandırılmış bir dosya sunucudaki tüm siteleri kapatabilir.

sudo nginx -t

Başarılı bir test şunu döndürür:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Hata görürseniz, Nginx sorunun oluştuğu dosya ve satır numarasını gösterecektir. Devam etmeden önce ilgili yapılandırma dosyasını gözden geçirin ve yazım hataları veya eksik noktalı virgülleri düzeltin.

Adım 6: Değişiklikleri Uygulamak için Nginx’i Yeniden Başlatın

Yapılandırma testi başarılı olduktan sonra, değişiklikleri uygulamak için Nginx’i yeniden yükleyin veya yeniden başlatın:

sudo systemctl restart nginx

Alternatif olarak, etkin bağlantıları kesintiye uğratmayan zarif bir yeniden başlatma için reload kullanın:

sudo systemctl reload nginx

Adım 7: Web Sitelerinize Erişin

DNS Zaten Yapılandırılmışsa

Alan adlarınız zaten DNS A kayıtları aracılığıyla sunucunuzun IP adresine işaret ediyorsa, bir tarayıcı açın ve şuraya gidin:

  • http://example1.com
  • http://example2.com

Adım 2’de oluşturduğunuz ilgili “Hoş Geldiniz” mesajlarını görmelisiniz.

Yerel Test İçin (DNS Olmadan)

Yerel olarak test ediyorsanız veya DNS henüz yayılmadıysa, yerel makinenizin /etc/hosts dosyasını (Linux/macOS’ta) veya C:WindowsSystem32driversetchosts (Windows’ta) düzenleyerek alan adı çözümlemesini simüle edebilirsiniz.

Dosyayı yükseltilmiş ayrıcalıklarla açın:

sudo nano /etc/hosts

Aşağıdaki satırları ekleyin, YOUR_SERVER_IP öğesini gerçek sunucu IP’nizle değiştirin:

YOUR_SERVER_IP example1.com www.example1.com
YOUR_SERVER_IP example2.com www.example2.com

Dosyayı kaydedin ve tarayıcınızda test edin. Gerçek DNS kayıtlarınız canlı olduğunda bu girişleri kaldırmayı unutmayın.

Adım 8: Let’s Encrypt ile HTTPS’yi Etkinleştirin (Önerilir)

Düz HTTP üzerinde web sitelerini çalıştırmak artık üretim ortamları için kabul edilemez. HTTPS, sunucunuz ile ziyaretçiler arasındaki trafiği şifreler, SEO sıralamalarını iyileştirir ve modern tarayıcı özellikleri için gereklidir. Let’s Encrypt, ücretsiz, otomatik olarak yenilenebilir SSL/TLS sertifikaları sağlar.

> Premium bir SSL çözümü tercih mi ediyorsunuz? AlexHost, genişletilmiş doğrulama veya joker kapsamı gereken işletmeler için güvenilir SSL Sertifikaları sunmaktadır.

Certbot’u Yükleyin

sudo apt install certbot python3-certbot-nginx

SSL Sertifikaları Alın ve Yükleyin

Her alan adı için Certbot’u çalıştırın. --nginx eklentisi Nginx yapılandırmanızı otomatik olarak HTTPS’yi etkinleştirecek şekilde değiştirir:

sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d example2.com -d www.example2.com

Etkileşimli istemleri izleyin. Certbot şunları yapacaktır:

  1. HTTP sınaması aracılığıyla alan adı sahipliğini doğrulayın
  2. Let’s Encrypt’ten imzalı bir sertifika alın
  3. Nginx server block’unu otomatik olarak 443 numaralı bağlantı noktasında dinleyecek şekilde güncelleyin
  4. HTTP’den HTTPS’ye yönlendirmeyi yapılandırın

Otomatik Yenilemeyi Doğrulayın

Let’s Encrypt sertifikaları her 90 günde bir sona erer. Certbot, yenilemeleri otomatik olarak işlemek için bir systemd zamanlayıc

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın