Nginx
- Okunuşu
- encin eks
Kısaca
Nginx, uygulama sunucularının önünde ters proxy, yük dengeleyici ve HTTP önbelleği olarak da çok kullanılan, hızlı ve açık kaynaklı bir web sunucusudur.
Nginx nedir?
"Engine x" diye okunan Nginx, Igor Sysoev tarafından geliştirildi ve 2004'te belirli bir sorunu çözmek için yayımlandı: tek bir makinede aynı anda binlerce bağlantıya hizmet vermek. Her ziyaretçi için yeni bir thread ya da süreç başlatmak yerine, bağlantıları bir olay döngüsüyle işleyen az sayıda işçi süreç kullanır; bu da ağır yük altında bellek kullanımını düşük ve dengeli tutar.
Web sunucusu olarak Nginx; HTML, CSS, görseller ve indirmeler gibi statik dosyaları çok verimli sunar. Ters proxy olarak internetten gelen istekleri alır ve Node.js, Python, PHP ya da başka bir dille yazılmış uygulama sunucularına iletir; böylece uygulama internetle doğrudan yüz yüze gelmez. Bu sırada HTTPS'i sonlandırabilir, yanıtları sıkıştırabilir, önbelleğe alabilir ve hız sınırları uygulayabilir.
Bir uygulamanın birkaç kopyasına istek dağıtan bir yük dengeleyici ve /api ile /static gibi yolları farklı yerlere yönlendiren bir ağ geçidi olarak da çalışabilir. Bunların hepsi, genellikle nginx.conf olan ve server ile location gibi bloklardan oluşan düz metin bir yapılandırma dosyasında tarif edilir.
Sık yapılan bir yanlış, uygulama kodunuzu Nginx'in çalıştırdığı düşüncesidir. Çoğunlukla istekleri bu işi yapan başka süreçlere iletir: PHP için PHP-FPM ile konuşur, Node.js için Node sunucusuna proxy yapar. Apache httpd ile birlikte dünyada en çok kullanılan web sunucularından biridir ve popüler Kubernetes ingress denetleyicilerinin de temelidir.
Önemli noktalar
- Nginx açık kaynaklı bir web sunucusu, ters proxy, yük dengeleyici ve önbellektir.
- Olay güdümlü tasarımı, binlerce bağlantıyı düşük maliyetle işlemesini sağlar.
- Statik dosyaları sunar, dinamik istekleri uygulama sunucularına iletir.
- Yol üzerinde HTTPS'i sonlandırabilir, sıkıştırabilir, önbelleğe alabilir ve hız sınırlayabilir.
- Davranışı, genellikle nginx.conf olan düz metin bir yapılandırma dosyasında ayarlanır.
Örnek
server {
listen 80;
server_name example.com;
# Static files straight from disk
location /static/ {
root /var/www;
}
# Everything else goes to the app on port 3000
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Sık sorulan sorular
Nginx nasıl okunur?
"Engine x" diye okunur; Türkçede "encin eks" gibi.
Nginx ile Apache arasındaki fark nedir?
İkisi de popüler, açık kaynaklı web sunucularıdır. Nginx birçok bağlantıyı az bellekle işleyen olay güdümlü bir tasarım kullanır ve çoğu zaman ters proxy olarak kullanılır; Apache httpd ise geleneksel olarak bağlantı başına bir süreç ya da thread kullanır ve dizin bazında .htaccess dosyalarını destekler.
Nginx bir yük dengeleyici mi?
Olabilir. Dosya sunmanın ve istekleri iletmenin yanı sıra Nginx, round robin ya da en az bağlantı gibi yöntemlerle trafiği birkaç arka sunucuya dağıtabilir.
İlgili sayfalar
- Web SunucusuBackend ve API'ler, s. 46Web sunucusu, tarayıcılardan ve diğer istemcilerden gelen HTTP isteklerini alıp sayfa, dosya ya da veriyle yanıt veren yazılım veya onu çalıştıran makinedir.
- Reverse ProxyDevOps ve Bulut, s. 42Reverse proxy, web sunucularının önünde durup istemci isteklerini onlar adına kabul eden ve her isteği doğru arka uç sunucuya ileten bir sunucudur.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- HTTP CachingBackend ve API'ler, s. 21HTTP caching, saklanan HTTP yanıtlarının tarayıcılar, CDN'ler ve proxy'ler tarafından, Cache-Control ve ETag başlıklarıyla denetlenerek yeniden kullanılmasıdır.
- TLSGüvenlik, s. 44TLS, ağda gönderilen veriyi şifreleyen ve sunucunun kimliğini doğrulayan, HTTPS, e-posta ve birçok başka bağlantıyı güvenceye alan kriptografik protokoldür.
- Rate LimitingBackend ve API'ler, s. 37Rate limiting, istemcinin belli bir sürede yapabileceği istek sayısını sınırlayıp sunucuyu ya da API'yi kötüye kullanımdan ve aşırı yükten koruyan tekniktir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin