Nginx Yapısı ve Konfigürasyonu
Nginx, güçlü ve esnek bir web sunucusudur. Konfigürasyon dosyaları, sunucunun davranışını tanımlamak için kullanılır. Temel konfigürasyon, genellikle bir ana dosya olan `nginx.conf` içinde yer alır. Bu dosya, Nginx’in yüklenmesi sırasında okunan ilk dosyadır ve sunucunun genel ayarlarını belirler.
nginx.conf Dosyası
`nginx.conf` dosyası, Nginx yapılandırma dosyalarının kalbini oluşturur. Bu dosyada, sunucunun genel ayarları, uygulama ayarları ve çeşitli direktifler tanımlanır. Ana yapısı bloklardan oluşmaktadır.
HTTP Bloğu
`http` bloğu, web sunucusu istekleri ve yanıtları için gerekli ayarların bulunduğu alandır. Bu blok içerisinde, sunucu ayarları, proxy ayarları, MIME türleri, gzip sıkıştırması gibi birçok direktif tanımlanabilir.
Server Bloğu
`server` bloğu, belirli bir alan adı veya IP adresine yönelik yapılandırmaları barındırır. Bu blok içinde, sunucunun dinleyeceği port, domain adı, belgelerin dizini gibi bilgiler yer alır. Birden fazla `server` bloğu tanımlanarak, tek bir Nginx örneği içinde çok sayıda farklı alan adı yönetilebilir.
Location Bloğu
`location` bloğu, belirli bir URI’ye yönelik ayarları tanımlar. Günlük dosyaları, proxy ayarları ve statik dosyalar için yönlendirme gibi işlemler burada gerçekleştirilebilir. `location` blokları, URI’ye göre daha spesifik ayarlamalar yapılmasını sağlar.
conf.d Dizini ve Ek Konfigürasyonlar
`conf.d` dizini, Nginx konfigürasyon dosyalarının modüler bir şekilde düzenlenmesine olanak tanır. Bu dizin altında bulunan dosyalar, `nginx.conf` dosyasında yer alan `include` direktifi ile dahil edilir. Böylece, her bir site veya uygulama için ayrı bir dosya oluşturmak mümkün hale gelir.
Bu yapı, konfigürasyon yönetimini kolaylaştırır. Örneğin, bir web sitesi için `example.com.conf` adında bir dosya oluşturulabilir. Bu dosya, sadece o siteye ait ayarları içerecek şekilde yapılandırılabilir. Dizin içindeki dosyaların isimleri genellikle `.conf` uzantısı ile sonlanır. Dizin altındaki her bir dosya, Nginx yeniden başlatıldığında otomatik olarak yüklenir.
Site Konfigürasyonları
Nginx ile barındırılan her bir web sitesi, genellikle kendi konfigürasyon dosyasına sahiptir. Bu dosyalar, sitenin gereksinimlerine göre özelleştirilir. Site konfigürasyonları, genellikle aşağıdaki unsurları içerir:
Domain ve Port Bilgisi
Her bir `server` bloğunda, hangi alan adlarının dinleneceği (örneğin `server_name www.example.com`) ve hangi portta (genellikle 80 veya 443) dinleme yapılacağı tanımlanır.
Kök Dizin ve Belgeler
`root` direktifi ile, sunucu kusa kök dizini belirtilir. Bu dizin içerisinde yer alan dosyalar, istemcilerin ziyareti sırasında sunulur. Ayrıca, `index` direktifi ile varsayılan belgeler tanımlanarak, istemci isteği sırasında hangi dosyanın öncelikli olarak sunulacağı belirlenebilir.
Proxy ve Yönlendirme Ayarları
Nginx, genellikle bir ters proxy olarak yapılandırılır. Bu nedenle, `proxy_pass` direktifi kullanılarak, isteklerin başka bir sunucuya yönlendirilmesi sağlanabilir. Örneğin, bir Node.js veya PHP uygulaması ile entegrasyon yapılırken, Nginx’in bu tür yönlendirmeleri kolaylıkla gerçekleştirebilmesi için gerekli ayarlar burada yapılır.
Ekstra Özellikler ve Güvenlik
Nginx konfigürasyon dosyaları, güvenlik ve optimizasyon gibi konularla daha da genişletilebilir. Örneğin, SSL sertifikalarının yönetimi için `ssl_certificate` ve `ssl_certificate_key` direktifleri kullanılabilir.
Ayrıca, belirli IP adreslerine erişim kısıtlamaları getirmek için `deny` ve `allow` direktifleri kullanılabilir. İstek sayısını sınırlamak için ise `limit_req` direktifleri işlevsel hale gelir.
Nginx Konfigürasyon Yönetimi
Nginx konfigürasyon dosyalarının yönetimi, dikkatli bir inceleme ve test aşaması gerektirir. Yapılan değişikliklerin Nginx’in yapılandırma dosyası üzerinde bir etkisi olup olmadığını kontrol etmek için `nginx -t` komutu kullanılabilir. Bu kontrol, sunucunun yeniden başlatılmasından önce konfigürasyon hatalarının tespit edilmesine olanak tanır.
Nginx, yapılandırma dosyalarını değiştirdikten sonra, değişikliklerin etkili olması için genellikle `nginx -s reload` komutu kullanılarak yeniden yüklenir. Bu işlem, sunucunun durdurulmadan yapılandırma dosyalarının güncellenmesini sağlar.
Sonuç olarak, Nginx konfigürasyon dosyaları, web sunucusunun performansı ve güvenliği açısından önemli bir yere sahiptir. `nginx.conf`, `conf.d` dizini ve site konfigürasyonları ile modüler bir yapı sunarak esneklik sağlar. Bu yapı, uygulama ve sitelerin her birinin ihtiyaç duyduğu özelleştirilmiş ayarların yapılabilmesine olanak tanır.