nginx nedir?
nginx (“engine x” diye okunur), yüksek performanslı bir web sunucusu, ters vekil (reverse proxy), yük dengeleyici ve önbellek yazılımıdır. Olay tabanlı mimarisi sayesinde çok sayıda eşzamanlı bağlantıyı düşük bellek tüketimiyle yönetebilir.
Hosting dünyasında nginx hem tek başına web sunucusu olarak hem de Apache’nin önünde statik içeriği sunan ve istekleri arka uca ileten katman olarak kullanılır.
Nasıl çalışır?
nginx bir ana süreç ve birkaç işçi süreçten oluşur. İşçiler bağlantıları engellemeden (asenkron) işler, bu yüzden bir istek beklerken diğerlerini karşılamaya devam eder.
serverblokları sanal konakları,locationblokları URL eşleştirmelerini tanımlar.- PHP gibi dinamik içerik, genellikle FastCGI üzerinden PHP-FPM’e iletilir.
- Ters vekil olarak uygulama sunucularına (Node.js, Python vb.) yönlendirme yapabilir.
Sunucu ve hosting ortamında
VPS ve özel sunucularda nginx; TLS sonlandırma, HTTP/2, sıkıştırma ve önbellek için sık seçilir. Panel kullanan ortamlarda ise Apache ile birlikte, nginx ön katman olarak çalıştırılabilir. Yapılandırma değişikliği öncesinde nginx -t ile sözdizimi denenir, ardından systemctl reload nginx uygulanır.
Yapılandırma tek bir yerde toplanmadığı için dosyalar çoğunlukla conf.d ya da sites-enabled altında parçalanır; hangi dosyanın etkin olduğunu bilmek sorun giderirken önemlidir.
Nasıl korunulur?
- nginx’i güncel tutun ve kullanılmayan modülleri derlemeyin.
server_tokens offile sürüm bilgisini gizleyin.limit_reqvelimit_connile istek hızını sınırlayarak kaba kuvvet ve basit yoğunluk saldırılarını hafifletin.- Hassas dizinlere (.git, yedek dosyaları, yapılandırma) erişimi
locationkurallarıyla engelleyin. - TLS için güncel protokol ve şifre ayarlarını kullanın; HSTS değerlendirin.
- Varsayılan sunucu bloğunu tanımlayıp eşleşmeyen alan adlarını reddedin.
Sık yapılan hatalar
locationbloklarının eşleşme sırasını yanlış anlayıp beklenmedik yönlendirmeler oluşturmak.- PHP isteklerinde dosya varlığını denetlememek (
try_fileskullanmamak). - Yapılandırmayı denemeden yeniden başlatmak.
- Ters vekilde gerçek istemci IP’sini arka uca iletmemek.
Sık sorulan sorular
nginx ne işe yarar?
Web sitelerini sunmak, istekleri arka uç uygulamalara iletmek, yükü dağıtmak ve içeriği önbelleğe almak için kullanılır. Yüksek bağlantı sayısında verimli çalışması en büyük avantajıdır.
nginx .htaccess dosyasını okur mu?
Hayır, nginx .htaccess desteği sunmaz; tüm kurallar sunucu yapılandırmasında tanımlanır. Apache’den geçerken bu kuralların nginx karşılıklarına çevrilmesi gerekir.
nginx yapılandırmasını nasıl güvenle yenilerim?
Önce nginx -t ile sözdizimini denetleyin, hata yoksa systemctl reload nginx ile uygulayın. Reload, mevcut bağlantıları koparmadan yeni ayarı devreye alır.
Bu terimin geçtiği rehberler
- systemd servis birimi yazma ve sertleştirme seçenekleriKendi uygulamanız için systemd servis birimi yazın: Unit, Service ve Install bölümleri, otomatik yeniden başlatma, ortam dosyası ve sertleştirme seçenekleri.
- Docker Compose ile uygulamayı güvenli yayınlama (ağlar, gizli bilgiler, kaynak limitleri)Docker Compose ile uygulamayı güvenli yayınlayın: iç ağlar, secrets ile gizli bilgi yönetimi, bellek ve CPU limitleri, salt okunur dosya sistemi ve sağlık kontrolü.
- logrotate yapılandırması: günlük döndürme, sıkıştırma ve saklamalogrotate ile günlük dosyalarını döndürme, sıkıştırma ve saklama süresini ayarlama; özel uygulama günlükleri için yapılandırma yazma, test etme ve sık hataları çözme rehberi.
- GoAccess ile Nginx/Apache web log analiziGoAccess ile Nginx ve Apache erişim günlüklerini terminalde ve HTML rapor olarak analiz etme, log formatı seçimi, gz arşivlerini okuma, zamanlanmış rapor ve erişim koruması rehberi.
İlgili terimler
- Node.jsNode.js, JavaScript kodunu tarayıcı dışında, sunucu tarafında çalıştıran olay tabanlı ve açık kaynaklı bir çalışma ortamıdır.
- OpenSSHLinux sunucularda SSH hizmetini sağlayan yaygın açık kaynaklı yazılım.
- PHPWeb sitelerinin büyük çoğunluğunda kullanılan sunucu taraflı programlama dili.
- PostfixPostfix, Linux sunucularda e-posta gönderme ve alma işini yürüten, güvenliği ve modüler yapısıyla bilinen açık kaynaklı bir MTA yazılımıdır.
- PostgreSQLPostgreSQL, işlem bütünlüğüne ve standartlara bağlılığıyla bilinen, açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir.
- RedisÖnbellek ve oturum deposu olarak yaygın kullanılan bellek içi veri deposu.