NGINX Kurulumu

Share

NGINX, bir web sunucusudur. 1990’larda başlatılan Apache web sunucusunun popülerliğinin artmasıyla birlikte, 2004 yılında Rus internet teknolojisi profesyoneli Igor Sysoev tarafından geliştirilmiştir. NGINX, hızlı ve verimli bir şekilde web içeriğini yayınlamaya ve talepleri işlemeye odaklanmıştır.

NGINX, yüksek performans, güvenilirlik, kolay yapılandırma ve büyük web siteleri için tasarlanmış olan özellikleri ile öne çıkmaktadır. Ayrıca, NGINX proxy sunucusu olarak da kullanılabilir ve istekleri filtreleyebilir, SSL/TLS sertifikalarını terminasyonu yapabilir ve yük dağılımı yapabilir.

NGINX Kurulum Aşamaları

  • İlk olarak, en son paket listelerine erişmek için güncelleme atıyoruz. Ardından Nginx, Ubuntu’nun varsayılan depolarında mevcut olduğundan, apt paketleme sistemini kullanarak bu depolardan kurulum yapıyoruz.
sudo apt update
sudo apt install nginx
  • Güvenlik Duvarı Ayarları ; Nginx, kurulum sırasında kendisini ufw ile bir hizmet olarak kaydeder ve bu da Nginx erişimine izin vermeyi kolaylaştırır.
sudo ufw app list

Uygulama profillerinin bir listesini görmeniz gerekiyor:

OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Nginx Full: Bu profil, hem 80 numaralı bağlantı noktasını (normal, şifrelenmemiş web trafiği) hem de 443 numaralı bağlantı noktasını (TLS/SSL şifreli trafik) açar
Nginx HTTP: Bu profil yalnızca 80 numaralı bağlantı noktasını açar (normal, şifrelenmemiş web trafiği)
Nginx HTTPS: Bu profil yalnızca 443 numaralı bağlantı noktasını açar (TLS/SSL şifreli trafik)
Yapılandırdığınız trafiğe izin verecek en kısıtlayıcı profili etkinleştirmeniz önerilir.

  • Şu anda yalnızca 80 numaralı bağlantı noktasında trafiğe izin vermemiz gerekecek.
sudo ufw allow 'Nginx HTTP'
  • UFW izinliler listesini görmek için;
sudo ufw status

Çıktı;

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
  • NGINX hizmetini kontrol etmek için;
systemctl status nginx

Çıktı;

Output● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2023-02-09 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

Sunucunuzun IP adresine giderek yazılımın düzgün çalıştığını doğrulamak için varsayılan Nginx açılış sayfasına erişebilirsiniz. Varsayılan Nginx sayfasını almanız gerekiyor. Bu sayfadaysanız, sunucunuz düzgün çalışıyor ve yönetilmeye hazır.

NGINX Süreç Yönetimi

  • Web sunucusunu durdurulduğunda başlatmak için;
sudo systemctl stop nginx
  • Hizmeti başlatmak için;
sudo systemctl start nginx
  • Hizmeti yeniden başlatmak için;
sudo systemctl restart nginx
  • Yalnızca yapılandırma değişiklikleri yapıyorsanız, Nginx genellikle bağlantıları kesmeden yeniden başlatılabilir. Bunu yapmak için şunu yazın:
sudo systemctl reload nginx
  • Hizmetin başlangıçta başlamasını kapatmak için;
sudo systemctl disable nginx
  • Hizmetin başlangıçta başlamasını tekrar aktif etmek için;
sudo systemctl enable nginx

Sunucu Bloklarını Ayarlama

Nginx web sunucusunu kullanırken, yapılandırma ayrıntılarını kapsüllemek ve tek bir sunucudan birden fazla etki alanını barındırmak için sunucu blokları (Apache’deki sanal ana bilgisayarlara benzer) kullanılabilir. alan_adınız adında bir alan oluşturacağız, ancak bunu kendi alan adınızla değiştirmelisiniz.

Ubuntu 20.04’teki Nginx, /var/www/html dizinindeki belgeleri sunmak üzere yapılandırılmış, varsayılan olarak etkinleştirilmiş bir sunucu bloğuna sahiptir. Bu, tek bir site için iyi olsa da, birden fazla site barındırmayı düşünüyorsanız, sizin için uygun olmayabilir. /var/www/html’yi değiştirmek yerine, /var/www içinde alan adınız için bir dizin yapısı oluşturalım ve /var/www/html’yi, bir istemci isteği herhangi biriyle eşleşmezse sunulacak varsayılan dizin olarak yerinde bırakalım.

  • Alan adı için dizin oluşturulur.
sudo mkdir -p /var/www/alan_adınız/html
  • $USER ortam değişkeniyle dizinin sahipliğini atayın;
sudo chown -R $USER:$USER /var/www/alan_adınız/html
  • Dizine gerekli izinler verilir.
sudo chmod -R 755 /var/www/alan_adınız
  • Nano editörü kullanarak örnek bir index.html sayfası oluşturun ve içeriği aşağıdaki gibi doldurun;
nano /var/www/alan_adınız/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The alan_adiniz server block is working!</h1>
    </body>
</html>
  • Nginx’in bu içeriği sunabilmesi için doğru yönergelere sahip bir sunucu bloğu oluşturmak gerekiyor. Varsayılan konfigürasyon dosyasını direkt olarak değiştirmek yerine /etc/nginx/sites-available/alan_adınız dosyası ile yeni bir tane yapalım;
sudo nano /etc/nginx/sites-available/alan_adınız
server {
        listen 80;
        listen [::]:80;

        root /var/www/alan_adınız/html;
        index index.html index.htm index.nginx-debian.html;

        server_name alan_adınız www.alan_adınız;

        location / {
                try_files $uri $uri/ =404;
        }
}
  • Nginx’in başlatma sırasında okuduğu sitelerin etkin olduğu dizine bir bağlantı oluşturarak dosyayı etkinleştirelim:
sudo ln -s /etc/nginx/sites-available/alan_adınız /etc/nginx/sites-enabled/

Artık iki sunucu bloğu etkinleştirildi ve alan_adınız yönergelerine göre isteklere yanıt verecek şekilde yapılandırıldı.

Not : Ek sunucu adlarının eklenmesinden kaynaklanabilecek olası bir hash bucket memory sorununu önlemek için /etc/nginx/nginx.conf dosyasında tek bir değeri ayarlamak gerekir.
server_names_hash_bucket_size yönergesini /etc/nginx/nginx.conf dosyası içinde bulun ve satırın yorumunu kaldırmak için # sembolünü kaldırın.

  • Nginx dosyalarınızın hiçbirinde sözdizimi hatası olmadığından emin olmak için test edin;
sudo nginx -t
  • Değişikliklerin etkili olması için nginx’i yeniden başlatın;
sudo systemctl restart nginx

NGINX Hakkında

/var/www/html: Varsayılan olarak buradaki içerik sunulur. Bu varsayılan klasörü değiştirmek için Nginx yapılandırma dosyalarında değişiklik yapabilirsiniz.
/etc/nginx: Nginx ile ilgili tüm konfigürasyon dosyalarının olduğu klasör.
/etc/nginx/nginx.conf: Ana Nginx yapılandırma dosyası. Bu, Nginx genel yapılandırmasında değişiklik yapmak için değiştirilebilir.
/etc/nginx/sites-available/: Her farklı site için sunucu bloklarının depolandığı dizin. Nginx, sitelerin etkin olduğu dizine bağlanmadıkça bu dizinde bulunan yapılandırma dosyalarını kullanmaz. Tipik olarak, tüm sunucu bloğu yapılandırması bu dizinde yapılır ve ardından diğer dizine bağlanarak etkinleştirilir.
/etc/nginx/sites-enabled/: Site başına etkinleştirilmiş sunucu bloklarının depolandığı dizin. Genellikle bunlar, sitelerde kullanılabilir dizinde bulunan yapılandırma dosyalarına bağlanarak oluşturulur.
/etc/nginx/snippets: Bu dizin, Nginx yapılandırmasında başka bir yere eklenebilecek yapılandırma parçalarını içerir. Potansiyel olarak tekrarlanabilir yapılandırma segmentlerini burada tanımlayarak farklı konfigürasyon dosyalarına ekleyebilirsiniz.
/var/log/nginx/access.log: Nginx’e gelen tüm istekler aksi şekilde yapılandırılmadığı müddetçe burada depolanır.
/var/log/nginx/error.log: Hatalar ise bu dosyada depolanır.