SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

Nginx nedir, ne demek? Hata sayfasında neden yazar?

Nginx, sitenin çalıştığı sunucu yazılımıdır. Bir 502 veya 403 sayfasının altında nginx yazıyorsa hata çoğu zaman sitenin tarafındadır. Ne iş yaptığı ve tarihi burada.

Nginx ne demek? Kısa cevap

Nginx (“engine x” diye okunur, Türkçe yazımla “encin eks”), bir sitenin sunucusunda çalışan web sunucusu yazılımıdır. Bir hata sayfasının altında “nginx” yazıyorsa, o sayfayı sitenin sunucusundaki nginx üretmiştir. Hata sitenin tarafındadır. Telefonunuz ya da bilgisayarınız çoğu zaman sorunun kaynağı olmaz.

Nginx'i bir hosting panelinde veya bir kurulum rehberinde gördüyseniz cevap aynıdır: nginx, ziyaretçiden gelen istekleri karşılayan programdır. Projenin kendi tanımına göre nginx bir HTTP (hypertext transfer protocol, köprü metni aktarım protokolü) web sunucusu, ters vekil sunucu, içerik önbelleği, yük dengeleyici, TCP/UDP vekil sunucusu ve e-posta vekil sunucusudur. TCP (transmission control protocol) ve UDP (user datagram protocol), internetin iki temel taşıma protokolüdür. Nginx'in ilk yazarı Igor Sysoev'dir. Açık kaynak sürümü 2 maddeli BSD lisansıyla dağıtılır, yani ücretsizdir.

Hata sayfasının altında nginx yazıyorsa sorun sizde mi?

Bir alışveriş sitesine ya da bir kamu hizmeti sayfasına girdiniz. Ekranın ortasında “502 Bad Gateway” yazıyor, altında küçük bir “nginx” satırı var. Bu sayfa sitenin sunucusundan geldi. İsteğiniz siteye ulaştı ve sunucu size bir cevap gönderdi. Bu yüzden internet bağlantınız en azından o sunucuya kadar çalışıyor demektir.

Sayfadaki üç haneli sayı bir HTTP durum kodudur. Kodların anlamını HTTP'nin standardı olan RFC 9110 tanımlar. Bir ziyaretçi için kısa anlamları şöyledir:

  • 502 Bad Gateway: Nginx burada bir aracı olarak çalışıyor. İsteğinizi arkasındaki uygulamaya iletti ama ondan geçersiz bir cevap aldı. Arkadaki uygulama çökmüş veya yeniden başlıyor olabilir. Sizin yapabileceğiniz şey birkaç dakika bekleyip sayfayı yenilemektir.
  • 504 Gateway Timeout: Nginx yine aracıdır. Arkasındaki sunucudan zamanında cevap alamadı. Arkadaki işlem çok uzun sürmüş olabilir.
  • 503 Service Unavailable: Sunucu şu anda isteği karşılayamıyor. Standart bunu geçici bir durum olarak tanımlar. Tipik sebepler geçici aşırı yük veya planlı bakımdır.
  • 403 Forbidden: Sunucu isteğinizi anladı ama yerine getirmeyi reddediyor. 403, sitenin bilerek uyguladığı bir kuraldan gelir. Kural bazen size bağlıdır. Site, IP (internet protocol) adresinize veya kullandığınız VPN'e (virtual private network, sanal özel ağ) göre erişimi kısıtlıyor olabilir. Böyle bir durumda VPN'i kapatmak veya başka bir ağdan denemek sonucu değiştirebilir.

İlk üç kodda düzeltilecek şey sizin cihazınızda değildir. Sorunu sitenin yöneticisi sunucuda çözer. Sizin elinizdeki seçenek beklemek ve sonra tekrar denemektir.

Neden altta “nginx” yazıyor?

Nginx'in server_tokens ayarı varsayılan olarak on durumundadır. Bu ayar açıkken nginx, kendi hata sayfalarına ve Server yanıt başlığına sürüm numarasını da yazar. Gördüğünüz alt satır budur. Yönetici ayarı off yaparsa sürüm numarası gizlenir. Site kendi tasarladığı hata sayfasını gösteriyorsa nginx satırı hiç görünmez. Bu yüzden altta “nginx” yazmaması, sitenin nginx kullanmadığını göstermez. Site bir CDN (content delivery network, içerik dağıtım ağı) arkasındaysa hata sayfasında CDN firmasının adını görebilirsiniz.

Bir sitenin nginx kullandığını nasıl görürsünüz?

curl komutundaki -I seçeneği yalnızca başlıkları getirir. Bunun için sunucuya bir HTTP HEAD isteği gönderir. Kendi bilgisayarınızda şunu çalıştırın:

curl -I https://example.com

Çıktıda Server: ile başlayan satıra bakın. Nginx kullanan ve bu başlığı gizlemeyen bir sitede o satırda nginx kelimesi görünür. server_tokens açıksa yanında bir sürüm numarası da olur. Bazı sunucular HEAD isteğine normal bir GET isteğinden farklı cevap verir. Bir CDN de bu satırı kendi adıyla değiştirebilir. Bu yüzden sonucu bir ipucu olarak okuyun.

Kendi sunucunuzda nginx kuruluysa sürümünü şu komutlarla görürsünüz:

nginx -v
nginx -V

-v yalnızca nginx sürümünü yazar. -V buna ek olarak derleyici sürümünü ve nginx derlenirken kullanılan configure parametrelerini yazar. Paketinizin hangi modüllerle derlendiğini bu parametrelerden anlarsınız. Kendi sunucunuz henüz yoksa, nginx'in genelde üzerinde çalıştığı makineyi VPS nedir rehberimiz anlatır.

Nginx hangi işleri yapar?

Nginx tek bir programdır ama birkaç işi birden yapar. Bir web sunucusunun genel olarak ne yaptığını web sunucusu nedir yazımızda anlattık. Nginx'in en sık kullanılan işleri şunlardır:

  • Statik dosya sunmak: HTML sayfalarını, CSS dosyalarını, resimleri ve indirme dosyalarını diskten okuyup ziyaretçiye gönderir.
  • Ters vekil sunucu (reverse proxy): Ziyaretçinin isteğini arkadaki bir uygulamaya iletir, cevabı da ziyaretçiye geri taşır. Node.js veya Python ile yazılmış uygulamalar için proxy_pass yönergesi kullanılır. Ziyaretçi yalnızca nginx ile konuşur ve arkadaki uygulamayı görmez.
  • FastCGI sunucularının önünde durmak: PHP siteleri genelde PHP-FPM (FastCGI Process Manager) ile çalışır ve PHP-FPM bir FastCGI sunucusudur. Nginx ona fastcgi_pass yönergesiyle bağlanır. Adres bir TCP portu, örneğin localhost:9000, veya bir UNIX soketi olabilir.
  • Yük dengeleyici (load balancer): Gelen istekleri birden fazla arka sunucuya dağıtır. Yöntem belirtilmezse varsayılan round-robin'dir, yani istekler sunuculara sırayla verilir. least_conn ve ip_hash diğer yerleşik yöntemlerdir.
  • Önbellek (cache): Arkadaki uygulamanın cevaplarını saklar ve aynı istek geldiğinde saklanan cevabı gönderir. proxy_cache varsayılan olarak off durumundadır, yani önbellek siz açmadan çalışmaz.
  • TLS sonlandırma: TLS (transport layer security, aktarım katmanı güvenliği), HTTPS bağlantısını şifreleyen protokoldür. Nginx'te HTTPS için listen satırına ssl parametresi eklenir, sertifika ve özel anahtar dosyalarının yeri yazılır. Şifreli bağlantıyı nginx karşılar. Arkadaki uygulama düz HTTP konuşmaya devam edebilir.

Bu işlerin her biri ayrı bir yapılandırma konusudur. Ters vekil kurulumunu adım adım görmek isterseniz nginx ters vekil yapılandırmasının satır satır açıklamasını okuyun. HTTPS tarafı için Ubuntu 24.04 üzerinde Certbot ile nginx'e ücretsiz Let's Encrypt sertifikası almak rehberi hazır. Şifresiz ve şifreli bağlantının farkını ise sunucunuzda HTTP ile HTTPS farkı yazısı açıklar.

Master ve worker süreçleri: nginx nasıl çalışır?

Nginx'te bir master süreç ve birkaç worker süreç vardır. Master süreç yapılandırmayı okur ve worker süreçlerini yönetir. İstekleri asıl işleyen worker süreçleridir.

Worker süreçleri olay tabanlı (event-driven) bir model kullanır. Bir worker, her bağlantı için ayrı bir süreç açıp beklemez. Bunun yerine işletim sistemine hangi bağlantılarda yeni veri olduğunu sorar ve yalnızca hazır olan bağlantılarla ilgilenir. Linux'ta bu iş için epoll, FreeBSD ve macOS'ta kqueue kullanılır. Böylece tek bir worker, aynı anda açık duran çok sayıda bağlantıyı idare eder. Boşta bekleyen bir bağlantı, bir sürecin tamamını meşgul etmez.

Worker sayısını worker_processes yönergesi belirler. Yerleşik varsayılan değer 1'dir. Belgeler, emin değilseniz CPU çekirdeği sayısıyla başlamayı önerir. auto değeri bu sayıyı kendisi bulmaya çalışır. Dağıtımınızın paketiyle gelen nginx.conf dosyası farklı bir değer yazmış olabilir. Gerçek değeri kendi dosyanızdan okuyun.

Apache'nin eski prefork modeli neden zorlandı?

İnternet büyüdükçe bir soru öne çıktı: tek bir sunucu on bin istemciye aynı anda nasıl hizmet verir? Bu soruya C10K problemi denir. Nginx'in tasarımı bu soruyu hedef alıyordu.

2012 tarihli The Architecture of Open Source Applications kitabının nginx bölümü, o günkü Apache'yi her yeni bağlantı için kendinin bir kopyasını oluşturacak şekilde tasarlanmış bir sunucu olarak anlatır. Apache'nin prefork modeli iş parçacığı (thread) kullanmaz. Bir ana süreç, alt süreçlerden oluşan bir havuzu yönetir ve isteklere bu alt süreçler cevap verir. Apache belgeleri, MaxRequestWorkers değerinin beklenen eşzamanlı istekleri karşılayacak kadar büyük olmasını ister. Aynı değer, bütün süreçler fiziksel RAM'e sığacak kadar küçük de olmalıdır. Binlerce eşzamanlı bağlantı binlerce süreç demekti, bu yüzden bellek hızla tükenebiliyordu. Nginx ise az sayıda worker ile aynı bağlantıları taşıyabiliyordu.

Bu anlatım geçmişe aittir. Apache 2.4 belgelerine göre modern işletim sistemlerinde varsayılan MPM (multi-processing module, çoklu işlem modülü) neredeyse her zaman event modülüdür. Event modülü, işin bir kısmını dinleyici iş parçacıklarına devrederek aynı anda daha fazla isteğe hizmet etmek için tasarlanmıştır. Bazı dağıtımlar veya paneller yine de prefork seçebilir, örneğin mod_php kullanan kurulumlar. Apache'yi nginx gibi bir ters vekil olarak kullanmak isterseniz Apache'de mod_proxy ile ters vekil kurulumu rehberine bakın.

Türkçe kaynaklarda sık görülen yanlışlar

Türkçe aramada üst sıralarda çıkan bazı nginx yazıları, belgelerle uyuşmayan bilgiler veriyor. Kaynağına bakarak düzeltelim.

“Nginx tek bir süreçte çalışır.” Doğru değil. Nginx bir master süreç ve birkaç worker süreçle çalışır. Tek bir worker birçok bağlantıyı idare eder, ama nginx'in kendisi tek süreç değildir.

“Modüller çalışırken eklenip çıkarılabilir.” Belgeler başka bir şey söyler. Dinamik modüller 1.9.11 sürümüyle, 9 Şubat 2016'da geldi. Bir modül load_module yönergesiyle yüklenir ve bu yönerge yalnızca yapılandırma dosyasının en üst seviyesinde (main bağlamı) yazılabilir. Modül, nginx yapılandırmayı okurken yüklenir. Yeni bir modül eklemek için yapılandırmayı değiştirip nginx'e yeniden okutmanız gerekir. 1.9.11'den önce bütün modüller programın içine derlenirdi.

“Nginx bozuk arka sunucuları kendiliğinden yoklar.” Açık kaynak nginx'te yalnızca pasif sağlık kontrolü vardır. Bu kontrol max_fails ve fail_timeout parametreleriyle ayarlanır. max_fails varsayılan olarak 1, fail_timeout varsayılan olarak 10 saniyedir. max_fails=0 bu kontrolü kapatır. Örnek:

upstream uygulama {
    server 127.0.0.1:8001 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:8002 max_fails=3 fail_timeout=30s;
}

Bu ayarla bir arka sunucu 30 saniye içinde 3 kez başarısız olursa, nginx onu 30 saniye boyunca kullanmaz. Kontrol pasiftir, çünkü nginx yalnızca gerçek ziyaretçi istekleri başarısız olduğunda durumu fark eder. Kimse istek göndermiyorsa nginx arka sunucuyu ayrıca yoklamaz. Düzenli aralıklarla yapılan aktif kontroller health_check yönergesiyle gelir. Bu yönergenin modülü nginx.org'da “commercial subscription” olarak işaretlidir, yani yalnızca ücretli NGINX Plus aboneliğinde bulunur.

“Apache bugün de her bağlantı için süreç açar.” Bu, prefork döneminden kalan bir tablodur. Yukarıda anlatıldığı gibi Apache 2.4 modern sistemlerde neredeyse her zaman event modülüyle çalışır.

Hosting panelinde nginx: Plesk ve cPanel ne yapar?

Paylaşımlı hostingde nginx ile genelde panel üzerinden karşılaşırsınız. İki yaygın panelin belgeleri farklı şeyler söyler.

Plesk (Linux): Plesk, nginx'i internet ile Apache arasına bir ters vekil sunucu olarak yerleştirir. Bu düzende ziyaretçiden gelen bütün istekleri önce nginx karşılar. Plesk belgelerine göre temiz bir Plesk kurulumunda nginx varsayılan olarak açıktır. Eski bir sürümden yükseltilmiş sunucularda açık olmayabilir. Panelinizde “Apache & nginx Settings” bölümü varsa bu ayarı orada görürsünüz.

cPanel: cPanel belgeleri nginx'i isteğe bağlı bir kurulum olarak anlatır. Sunucu yöneticisi ea-nginx paketini WHM içindeki NGINX Manager veya EasyApache 4 ile kurar. Kurulduğunda nginx, dinamik içeriği Apache'ye ileten bir ters vekil olarak ayarlanır. Kurulum, sunucudaki bütün hesapları varsayılan olarak nginx ve önbellek kullanacak şekilde de yapılandırır.

Türkiye'deki hosting firmalarının hangi paneli hangi ayarla sattığını genel bir kuralla bilemezsiniz. Firmanın paket sayfasına bakın ya da sitenize curl -I ile istek gönderip Server satırını okuyun. Kendi sunucunuzu yönetmeyi düşünüyorsanız VPS için cPanel alternatifleri yazısı panel seçeneklerini karşılaştırır.

Nginx'in kısa tarihi

  • 2002: Igor Sysoev nginx'in ilk satırlarını yazdı.
  • 4 Ekim 2004: İlk herkese açık sürüm olan 0.1.0 yayımlandı. nginx.org'daki değişiklik günlüğü bu sürümü “The first public version” diye kaydeder.
  • 2011: Geliştirmeyi resmîleştirmek için Nginx, Inc. şirketi kuruldu.
  • 9 Şubat 2016: 1.9.11 sürümü dinamik modülleri getirdi.
  • 11 Mart 2019: F5, NGINX'i yaklaşık 670 milyon ABD doları değerinde bir anlaşmayla satın alacağını duyurdu. Satın alma Mayıs 2019'da tamamlandı.
  • 27 Ekim 2022: Angie 1.0.0 yayımlandı.
  • 14 Şubat 2024: Maxim Dounin, freenginx çatalını duyurdu.

nginx, NGINX Plus, Angie ve freenginx arasındaki fark nedir?

nginx açık kaynak projenin kendisidir ve nginx.org'da yayımlanır. 2 maddeli BSD lisansıyla dağıtılır.

NGINX Plus, F5'in ücretli ticari aboneliğidir. nginx.org'daki yük dengeleme rehberine göre uygulama yük dengeleme, uygulama sağlık kontrolleri, etkinlik izleme ve sunucu gruplarının çalışırken yeniden yapılandırılması Plus aboneliğinin parçasıdır. Fiyat için F5'in kendi satış sayfasına bakın.

Angie, nginx'ten çatallanmış (fork) bir projedir. Belgelerine göre projeyi orijinal ekipten ayrılan geliştiriciler başlattı. Angie 1.0.0, 27 Ekim 2022'de çıktı ve nginx 1.23.2'nin bütün işlevlerini içeriyordu. Angie de BSD lisanslıdır.

freenginx, Maxim Dounin'in 14 Şubat 2024'te duyurduğu çataldır. Dounin, duyurusunda artık F5 bünyesindeki nginx üzerinde çalışmadığını söyledi. Ona göre F5'teki teknik olmayan yeni bir yönetim, açık kaynak projelerin nasıl yürütüleceğini daha iyi bildiğine karar vermişti. Dounin'in belirttiği amaç, nginx geliştirmesini keyfi şirket kararlarından uzak tutmaktır.

Bu projelerin her biri kendi sürümlerini ayrı yayımlar. Güncel sürüm numarası için her projenin kendi değişiklik günlüğüne bakın. Nginx'i benzer işleri yapan diğer araçlarla karşılaştırmak isterseniz nginx, Caddy ve Traefik karşılaştırmasını okuyun.

Nginx ne kadar yaygın?

Web teknolojisi anketleri yapan W3Techs'e göre, 24 Ekim 2026 itibarıyla web sunucusu bilinen sitelerin %30,2'si nginx kullanıyor. W3Techs bir anket sitesidir ve rakam onun ölçüm yöntemine bağlıdır. Bu oran, bir hata sayfasının altında neden bu kadar sık “nginx” gördüğünüzü de açıklar.

Sık sorulan sorular (FAQ)

Nginx ne demek, nasıl okunur?

Nginx “engine x” diye okunur, Türkçe yazımla “encin eks”. Bir sitenin sunucusunda çalışan web sunucusu yazılımıdır. Statik dosya sunar ve istekleri arkadaki uygulamalara iletir. Yük dengeleme ile önbellek de yapabilir, HTTPS bağlantılarını da karşılar. İlk yazarı Igor Sysoev'dir ve ilk herkese açık sürümü 4 Ekim 2004'te çıktı.

Sitede “502 Bad Gateway nginx” yazıyor. Sorun benim internetimde mi?

Çoğu zaman hayır. O sayfayı sitenin sunucusundaki nginx gönderdi, yani isteğiniz siteye ulaştı. 502, nginx'in arkasındaki uygulamadan geçersiz bir cevap aldığı anlamına gelir. Sorunu sitenin yöneticisi çözer. Birkaç dakika bekleyip sayfayı yenilemek dışında cihazınızda yapmanız gereken bir şey yoktur.

“403 Forbidden nginx” hatası neden çıkar?

403, sunucunun isteğinizi anladığını ama yerine getirmeyi reddettiğini söyler. Bu red sitenin kendi kuralından gelir. Kural bazen IP adresinize veya kullandığınız VPN'e bağlıdır. VPN'i kapatmak veya başka bir ağdan denemek sonucu değiştirebilir. Değişmiyorsa erişimi yalnızca site yöneticisi açabilir.

Nginx ücretsiz mi?

Açık kaynak nginx 2 maddeli BSD lisansıyla dağıtılır ve ücretsizdir. F5'in NGINX Plus adlı ücretli bir ticari aboneliği de vardır. Aktif sağlık kontrolleri gibi bazı özellikler yalnızca Plus'ta bulunur. Angie ve freenginx de nginx'ten çıkmış çatallardır. Angie BSD lisansıyla dağıtılır.

Nginx ile Apache arasındaki fark nedir?

Nginx az sayıda worker süreciyle çalışır. Her worker, olay tabanlı bir modelle çok sayıda bağlantıyı idare eder. Apache'nin eski prefork modeli her isteğe bir alt süreç ayırıyordu, bu yüzden çok sayıda eşzamanlı bağlantıda bellek hızla tükenebiliyordu. Bugünkü Apache 2.4 modern sistemlerde çoğunlukla event modülüyle çalışır. Plesk gibi panellerde ikisi birlikte kullanılır: nginx önde ters vekil olarak durur, Apache arkada çalışır.