Nginx, aynı zamanda ters proxy ve arka uç uygulamaları için yük dengeleyici olarak da çalışan, açık kaynaklı, yüksek performanslı bir web sunucusudur. Nginx, dinamik veri odaklı web uygulamalarını çalıştırmak için Python, Golang ve PHP gibi modern sunucu tarafı betik dilleriyle entegre olur.

Bu yazıda Debian 12’ye nasıl Nginx indirileceği, sanal host kurulacağı ve Let’s Encrypt kullanarak sunucuyu nasıl korumaya alınacağı anlatılmaktadır.

İlk Adımlar

Başlamadan Önce:

  • sudo izinlerine sahip, root olmayan bir kullanıcı ile bir Debian 12 sunucusuna erişiminiz olsun.
  • Sunucunuzun IP’sine yönlendirilen A kaydı bulunan bir domain veya alt domain yaratın. Örneğin; app.example.com.

Nginx İndirin

Deban 12’nin temel yükleme paketi içinde Nginx’i bulabilirsiniz. Aşağıdaki adımları takip ederek APT Paket Yöneticisini kullanarak sunucu paket dizinini güncelleyebilir ve Nginx’i indirebilirsiniz.

  1. Sunucunun paket dizinini güncelle.
    $ sudo apt update
  2. Nginx indir.
    $ sudo apt install nginx -y
  3. HTTP port 80 ‘e firewall üzerinden izin ver.
    $ sudo ufw allow 80/tcp
  4. HTTPS port 443 ‘e firewall üzerinden izin ver.
    $ sudo ufw allow 443/tcp
  5. UFW’yi firewall değişimlerini alması için yeniden yükle.
    $ sudo ufw reload
  6. Browser kullanarak sunucu IP’ne giriş yaparak Nginx Varsayılan Hoş Geldin Sayfasına ulaşıp ulaşmadığını test et.
    http://SERVER-IP
    Nginx Welcome Page

Nginx Sistem Hizmetleri’ni Düzenleyin

nginx systemd servis profili web sunucusu uygulama işlemlerini yönetmek için kullanır. systemctl kullanarak yönetmek için aşağıdaki adımları kullanınız.

  1. Sistem başladığında  otomatik çalıştırmak için Nginx servisini aktif ediniz.
    $ sudo systemctl enable nginx
  2. Nginx servisini başlatın.
    $ sudo systemctl start nginx
  3. Nginx Servis Durumunu kontrol ederek çalışır durumda olduğundan emin olun.
    $ sudo systemctl status nginx

    Komut Çıktısı:

    ● nginx.service - A high performance webserver and a reverse proxy server
         Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
         Active: active (running) since Sat 2024-08-24 07:00:58 UTC; 1min 35s ago
    ...
  4. Nginx Servisini durdurun.
    $ sudo systemctl stop nginx
  5. Servisi yeniden başlatın.
    $ sudo systemctl restart nginx

Yeni Bir Nginx Sanal Host’U Oluşturun

Nginx sanal host yapılandırmaları web sunucularının tek yerde birden fazla web sitesi barındırmasını sağlar. Sanal host yapılandırması, belirli bir etki alanı adı için kök dizini, sunucu adını, hata dosyalarını ve dizin sayfalarını tanımlayan birden fazla yönergeden oluşur. Yeni bir Nginx sanal hostu oluşturmak için aşağıdaki adımları izleyin.

  1. Yeni bir Nginx sanal host konfigürasyon dosyası oluşturun. Örneğin, app.example.com.conf.
    $ sudo touch /etc/nginx/conf.d/app.example.com.conf
  2. nanogibi bir text editor kullanarak dosyayı açın.
    $ sudo nano /etc/nginx/conf.d/app.example.com.conf

    Dosyaya aşağıdaki içeriği ekleyin.  app.example.com örneğini asıl domaininiz ile değiştirin.

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

    Dosyayı kaydedip kapatın.

    Yukarıdaki Nginx ayarları app.example.com domainine gelen bağlantıları dinleyen bir sanal host oluşturur ve /var/www/html/app.example.com dizininden uygulama dosyalarını iletir.

  3. Sanal host’un web root dizinini oluşturun.
    $ sudo mkdir -p /var/www/html/app.example.com
  4. Yeni bir index.html dosyası oluşturun.
    $ sudo nano /var/www/html/app.example.com/index.html
  5. Aşağıda yazan dizini dosyaya ekleyin.
    <html>
        <head></head>
        <body>
            <h1>Greetings from Vultr</h1>
        </body>
    </html>

    Dosyayı kaydedip kapatın.

    Yukarıdaki uygulamaya giriş yapabildiğinizde Greetings from Vultr mesajı görülecektir.

  6. www-data sunucu kullanıcısı ve grubuna /var/www/html/app.example.com dizini için sahiplik izni verin.
    $ sudo chown -R www-data:www-data /var/www/html/app.example.com
  7. Nginx konfigürasyonunu hatalar için kontrol edin.
    $ sudo nginx -t

    Komut Çıktısı:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  8. Değişimlerin uygulanması için Nginx servisini yeniden başlatın.
    $ sudo systemctl restart nginx
  9. Domain’e giriş yaparak değişimleri doğrulayın.
    http://app.example.com

Nginx Web Sunucusunu Koruma Altına Alın

Nginx gelen HTTP bağlantıları port 80 üzerinden alır.   HTTP port 443,portu üzerinden güvence altına almak için SSL sertifikası yüklenmesi gereklidir. Aşağıdaki adımları takip ederek Let’s Encrypt sertifikası yükleyebilirsiniz.

  1. Certbot Let’s Encrypt müşteri aracını ve Nginx pluginini yükleyin.
    $ sudo apt install python3-certbot-nginx certbot -
    
  2. Sanal host için yeni bir SSL sertifikası oluşturun.  app.example.com örneğini asıl domain adınızla ve hello@example.com örneğini aktif mail adresinizle değiştirin.
    $ sudo certbot --nginx -d app.example.com -m hello@example.com --agree-tos
  3. Certbot’un sertifika yenileyebildiğinden emin olun.
    $ sudo certbot renew --dry-run
  4. Ayar değişikliklerinin işleme girmesi için Nginx’i yeniden başlatın.
    $ sudo systemctl restart nginx
  5.  HTTPS kullanarak sayfanıza girin ve doğrulayın.
    https://app.example.com

Sonuç

Debian 12’ye Nginx kurdunuz, yeni bir sanal sunucu kurdunuz ve Let’s Encrypt Sertifikası yüklediniz. Nginx bir web sunucusu, yük dengeleyici veya ters proxy olarak çalışabilmektedir.