Nginx , her boyuttaki web sitelerini ve uygulamaları barındırmak için kullanılan ücretsiz ve açık kaynaklı bir web sunucusudur. Yazılım, bellek kaynakları üzerindeki düşük etkisi, yüksek ölçeklenebilirliği ve güvenli, öngörülebilir performans sunabilen modüler, olaya dayalı mimarisi ile bilinir. Bir web sunucusundan daha fazlası olan Nginx, aynı zamanda bir yük dengeleyici, bir HTTP önbelleği ve bir ters proxy olarak da çalışır.
Adım 1 – Nginx’i Kurma
Nginx, Debian’ın varsayılan yazılım havuzlarında bulunur ve bu da onu geleneksel paket yönetim araçlarından kurmayı mümkün kılar.
Önce yerel paket dizininizi en son yukarı akış değişikliklerini yansıtacak şekilde güncelleyin:
sudo apt update
Ardından nginx
paketi kurun:
sudo apt install nginx
Girerek kurulumu onaylayın Y
, ardından Enter
devam etmek için tuşuna basın. apt
daha sonra Nginx’i ve gerekli tüm bağımlılıkları sunucunuza yükleyecektir.
Adım 2 – Güvenlik Duvarını Ayarlama
Nginx’i test etmeden önce, varsayılan web bağlantı noktalarına dışarıdan erişime izin vermek için güvenlik duvarı ayarlarını değiştirmek gerekir. Önkoşullardaki talimatları uyguladığınızı varsayarsak, sunucunuza erişimi kısıtlamak için yapılandırılmış bir UFW güvenlik duvarınız olmalıdır.
Yükleme sırasında Nginx, güvenlik duvarı aracılığıyla Nginx’e erişimi etkinleştirmek veya devre dışı bırakmak için kullanılabilecek birkaç uygulama profili sağlamak için kendisini UFW’ye kaydeder.
ufw
Aşağıdakileri yazarak uygulama profillerini listeleyin :
sudo ufw app list
Uygulama profillerinin bir listesini almalısınız:
Output
Available applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...
Gördüğünüz gibi, Nginx için kullanılabilen üç profil var:
- 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 yine de izin verecek en kısıtlayıcı profili etkinleştirmeniz önerilir. Bu kılavuzda sunucunuz için TLS/SSL’yi henüz yapılandırmadığınız için, yalnızca 80 numaralı bağlantı noktasında HTTP trafiğine izin vermeniz gerekir.
Bu komutu yazarak etkinleştirebilirsiniz:
sudo ufw allow 'Nginx HTTP'
Değişikliği aşağıdaki komutu yazarak doğrulayabilirsiniz:
sudo ufw status
Çıktıda izin verilen HTTP trafiği görünür:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Adım 3 – Web Sunucunuzu Kontrol Etme
Kurulum işleminin sonunda Debian 10, Nginx’i başlatır. Web sunucusu zaten çalışır durumda olmalıdır.
Hizmetin çalıştığından emin olmak için systemd init sistemiyle şunu yazarak kontrol edebilirsiniz:
systemctl status nginx
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. Sunucunuzun IP adresini bilmiyorsanız, bunu sunucunuzun komut istemine yazabilirsiniz:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Sunucunuzun IP adresine sahip olduğunuzda, bunu tarayıcınızın adres çubuğuna girin:
http://your_server_ip
Varsayılan Nginx açılış sayfası web tarayıcınızda görünmelidir:
Adım 4 – Nginx Sürecini Yönetme
Artık web sunucunuz hazır ve çalışır durumda olduğuna göre, bazı temel yönetim komutlarını inceleyebilirsiniz.
Web sunucunuzu durdurmak için şunu yazın:
sudo systemctl stop nginx
Web sunucusunu durdurulduğunda başlatmak için şunu yazın:
sudo systemctl start nginx
Hizmeti durdurmak ve ardından yeniden başlatmak için şunu yazın:
sudo systemctl restart nginx
Yapılandırma değişiklikleri yapıyorsanız, Nginx genellikle bağlantıları kesmeden yeniden yükleyebilir. Bunu yapmak için şunu yazın:
sudo systemctl reload nginx
Varsayılan olarak, Nginx, sunucu önyüklendiğinde otomatik olarak başlayacak şekilde yapılandırılmıştır. İstediğiniz bu değilse, şunu yazarak bu davranışı devre dışı bırakabilirsiniz:
sudo systemctl disable nginx
Hizmetin önyüklemede başlamasını yeniden etkinleştirmek için şunu yazabilirsiniz:
sudo systemctl enable nginx
Adım 5 – Sunucu Bloklarını Ayarlama (Opsiyonel)
Nginx web sunucusunu kullanırken, yapılandırma ayrıntılarını kapsüllemek ve tek bir sunucuda birden fazla etki alanını barındırmak için sunucu blokları (Apache’deki sanal ana bilgisayarlara benzer) kullanılabilir. Aşağıdaki komutlarda alan_adiniz’i kendi alan adınızla değiştirin. DigitalOcean ile bir alan adı ayarlama hakkında daha fazla bilgi edinmek için DigitalOcean DNS’ye girişimize bakın.
Debian 10’daki 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 sonuç verse de, birden fazla site barındırıyorsanız yönetilemez hale gelebilir. /var/www/html’yi değiştirmek yerine, etki alanınız web sitesi için /var/www içinde bir dizin yapısı oluşturun ve bir istemci isteği başka herhangi bir istekle eşleşmezse sunulacak varsayılan dizin olarak /var/www/html’yi yerinde bırakın Siteler.
Gerekli üst dizinleri oluşturmak için -p bayrağını kullanarak etki alanınız için dizini aşağıdaki gibi oluşturun:
sudo mkdir -p /var/www/your_domain/html
Ardından, mevcut sistem kullanıcınıza başvurması gereken $USER ortam değişkeniyle dizinin sahipliğini atayın:
sudo chown -R $USER:$USER /var/www/your_domain/html
Umask değerinizi değiştirmediyseniz, web kökünüzün izinleri doğru olmalıdır, ancak şunu yazarak emin olabilirsiniz:
sudo chmod -R 755 /var/www/your_domain
Ardından, nano veya tercih ettiğiniz metin düzenleyiciyi kullanarak örnek bir index.html sayfası oluşturun:
nano /var/www/your_domain/html/index.html
İçeride, aşağıdaki örnek HTML’yi ekleyin:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
İşiniz bittiğinde dosyayı kaydedin ve kapatın. Nano’da bunu CTRL + X, ardından Y ve ardından ENTER tuşlarına basarak yapabilirsiniz.
Nginx’in bu içeriği sunabilmesi için, özel web kökünüze işaret eden doğru yönergelere sahip bir sunucu bloğu oluşturmanız gerekir. Varsayılan yapılandırma dosyasını doğrudan değiştirmek yerine, /etc/nginx/sites-available/your_domain adresinde yeni bir tane oluşturun:
sudo nano /etc/nginx/sites-available/your_domain
Varsayılana benzer, ancak yeni dizininiz ve alan adınız için güncellenen aşağıdaki yapılandırma bloğunu ekleyin:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Yeni dizininizin güncellenmiş kök yapılandırmasına ve etki alanı adınızın sunucu_adı olduğuna dikkat edin. alan_adiniz’i gerçek alan adınızla değiştirmeyi unutmayın.
Ardından, Nginx’in başlatma sırasında okuduğu sitelerin etkin olduğu dizindeki özel yapılandırma dosyanıza sembolik bir bağlantı oluşturarak bu sunucu bloğunu etkinleştirin:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Sunucunuz artık dinleme ve sunucu_adı yönergelerine dayalı olarak isteklere yanıt vermek üzere etkinleştirilen ve yapılandırılan iki sunucu bloğuna sahiptir (Nginx’in bu yönergeleri nasıl işlediği hakkında daha fazla bilgiyi burada bulabilirsiniz):
your_domain: your_domain ve www.your_domain isteklerine yanıt verir.
varsayılan: 80 numaralı bağlantı noktasındaki diğer iki blokla eşleşmeyen tüm isteklere yanıt verir.
Yapılandırmanıza ek sunucu adları eklemekten kaynaklanabilecek olası bir karma kova bellek sorununu önlemek için /etc/nginx/nginx.conf dosyasında tek bir değer ayarlamanız gerekir. Dosyayı aç:
sudo nano /etc/nginx/nginx.conf
server_names_hash_bucket_size yönergesini bulun ve satırın yorumunu kaldırmak için # sembolünü kaldırın:
...
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
Herhangi bir sorun yoksa çıktısı aşağıdaki gibidir.
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Yapılandırma testiniz geçtikten sonra, değişikliklerinizi etkinleştirmek için Nginx’i yeniden başlatın:
sudo systemctl restart nginx
Nginx şimdi alan adınıza hizmet ediyor olmalıdır. http://alan_adiniz’e giderek bunu test edebilirsiniz. /var/www/alan_adiniz/html/index.html klasöründe oluşturduğunuz özel HTML burada oluşturulmalıdır:l
Adım 6 – Önemli Nginx Dosyalarını ve Dizinlerini Tanımak
Artık Nginx hizmetinin kendisini nasıl yöneteceğinizi bildiğinize göre, birkaç önemli dizini ve dosyayı tanımak için biraz zaman ayırabilirsiniz.
İçerik
/var/www/html: Varsayılan olarak yalnızca daha önce gördüğünüz varsayılan Nginx sayfasından oluşan gerçek web içeriği /var/www/html dizininden sunulur. Bu, Nginx yapılandırma dosyalarını düzenleyerek değiştirilebilir.
Sunucu Yapılandırması
- /etc/nginx: Nginx yapılandırma dizini. Tüm Nginx yapılandırma dosyaları burada bulunur.
- /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/: Site başına sunucu bloklarının depolanabileceği 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/: Etkinleştirilen site başına 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 segmentleri, snippet’lerde yeniden düzenleme için iyi adaylardır.
Sunucu Günlükleri
- /var/log/nginx/access.log: Nginx aksini yapacak şekilde yapılandırılmadığı sürece, web sunucunuza yapılan her istek bu günlük dosyasına kaydedilir.
- /var/log/nginx/error.log: Herhangi bir Nginx hatası bu günlüğe kaydedilecektir.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.