Nginx (Engine-X olarak telaffuz edilir), yüksek performanslı, açık kaynaklı bir web sunucusudur. Aynı zamanda ters proxy, HTTP yük dengeleyici ve posta (IMAP/POP3) proxy sunucusu olarak da kullanılabilir. Bu rehberde, Nginx konfigürasyon dosyalarını nasıl oluşturacağınızı ve her bir kodun ne işe yaradığını basit bir dille anlatacağım.
Nginx Kurulumu
Öncelikle, Nginx'i kurmanız gerekiyor. Ubuntu kullanıyorsanız, aşağıdaki komutla Nginx'i kurabilirsiniz:
sudo apt update sudo apt install nginx
Nginx Konfigürasyon Dosyası
Nginx'in ana konfigürasyon dosyası /etc/nginx/nginx.conf dosyasıdır. Bu dosya, Nginx'in nasıl davranacağını belirler. Ancak, genellikle siteler için ayrı ayrı konfigürasyon dosyaları oluştururuz. Bu dosyalar genellikle /etc/nginx/sites-available/ dizininde bulunur ve etkinleştirilmiş siteler ise /etc/nginx/sites-enabled/ dizininde sembolik linkler aracılığıyla yer alır.
Basit Bir Nginx Konfigürasyonu
Aşağıda, basit bir Nginx konfigürasyon dosyasının nasıl oluşturulacağını ve her bir bölümün ne işe yaradığını anlatacağım. Bu konfigürasyon dosyasını default adıyla /etc/nginx/sites-available/ dizinine kaydedebilirsiniz.
server { listen 80; # Bu satır, Nginx'in 80 numaralı port üzerinden HTTP isteklerini dinleyeceğini belirtir. server_name example.com; # Bu satır, hangi alan adının bu konfigürasyonu kullanacağını belirtir. root /var/www/html; # Bu satır, web sitenizin kök dizinini belirtir. index index.html index.htm; # Bu satır, varsayılan açılış dosyasını belirtir. location / { try_files $uri $uri/ =404; # Bu satır, gelen isteklerin nasıl işleneceğini belirtir. # $uri isteği belirtilen dosya veya dizine yönlendirir, # yoksa 404 döndürür. } error_page 404 /404.html; # Bu satır, 404 hata sayfasının yerini belirtir. error_page 500 502 503 504 /50x.html; # Bu satır, çeşitli hata durumları için özel sayfalar belirtir. location = /50x.html { root /var/www/html; # Bu satır, hata sayfalarının kök dizinini belirtir. } }
Detaylı Açıklama
- `server { ... }`: Bu blok, bir sanal sunucuyu tanımlar. Birden fazla server bloğu, aynı Nginx konfigürasyon dosyasında bulunabilir.
- `listen 80;`: Bu satır, Nginx'in 80 numaralı portta (varsayılan HTTP portu) gelen istekleri dinleyeceğini belirtir.
- `server_name example.com;`: Bu satır, bu konfigürasyonun hangi alan adları için geçerli olduğunu belirtir.
- `root /var/www/html;`: Bu satır, web sitenizin dosyalarının bulunduğu kök dizini belirtir.
- `index index.html index.htm;`: Bu satır, belirtilen dizinde varsayılan olarak hangi dosyanın açılacağını belirtir.
- `location / { ... }`: Bu blok, belirtilen yol için (bu durumda kök yol için) gelen isteklerin nasıl işleneceğini tanımlar.
- `try_files $uri $uri/ =404;`: Bu satır, istek edilen dosyanın var olup olmadığını kontrol eder ve var olan dosyayı sunar. Dosya yoksa 404 hatası döner.
- `error_page 404 /404.html;`: Bu satır, 404 hata durumunda gösterilecek özel hata sayfasını belirtir.
- `error_page 500 502 503 504 /50x.html;`: Bu satır, 500, 502, 503 ve 504 hata durumlarında gösterilecek özel hata sayfasını belirtir.
- `location = /50x.html { ... }`: Bu blok, hata sayfalarının yerini belirtir.
Konfigürasyonu Etkinleştirme
Yukarıdaki konfigürasyon dosyasını oluşturduktan sonra, bu dosyayı etkinleştirmeniz gerekiyor. Bunun için sites-available dizinindeki dosyayı sites-enabled dizinine sembolik bir linkle bağlamanız yeterlidir:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
Ardından, Nginx'i yeniden başlatmanız gerekmektedir:
sudo systemctl restart nginx
Bu rehberde, Nginx konfigürasyon dosyasının temel yapı taşlarını ve her bir bileşenin ne işe yaradığını öğrendiniz. Bu bilgilerle, kendi web sitenizi Nginx ile barındırmaya başlayabilirsiniz. Daha karmaşık konfigürasyonlar için Nginx belgelerine göz atabilirsiniz.