Nginx Nasıl Kurulur ve Yapılandırılır?

Nginx Nasıl Kurulur ve Yapılandırılır?

Kisaca

Nginx, tek bir komutla kurulabilen yuksek performansli bir web sunucusu ve ters proxydir. Dogru calismasi icin onemli olan; sunucu blogunu (server block) duzgun tanimlamak, her degisiklikten sonra nginx -t ile test edip reload ile kesintisiz uygulamak ve guvenlik duvarinda 80/443 portlarini acmaktir. Asagida sifirdan kurulumdan SSL, gzip ve ters proxy yapilandirmasina kadar tum adimlari bulacaksiniz.

  • Ubuntu/Debian icin apt, AlmaLinux/RHEL icin dnf ile tek satirda kurulum.
  • worker_processes auto ve gzip on gibi ayarlar performansi belirgin sekilde artirir.
  • Canli ortamda her zaman once nginx -t, sonra systemctl reload nginx.

Nginx, yuksek performansli bir HTTP web sunucusu, ters proxy ve yuk dengeleyicidir. Olay tabanli (event-driven) mimarisi sayesinde cok sayida es zamanli baglantiyi dusuk kaynak tuketimiyle karsilar; bu yuzden hem statik icerik sunumunda hem de uygulama onunde proxy olarak dunyanin en cok kullanilan web sunucularindan biridir. Bu rehberde Nginx’i bir sunucuya kurmayi, temel bir site yapilandirmasini ve SSL, sikistirma, ters proxy gibi gercek dunyada ihtiyac duyacaginiz ayarlari adim adim anlatiyoruz.

Nginx’i tam kontrolle calistirmak icin root erisimli bir VPS/sunucu idealdir; paylasimli ortamlarda web sunucusu yapilandirmasina dogrudan mudahale edemezsiniz.

Nginx Nedir, Ne Ise Yarar?

Nginx (telaffuzu “engine-x”) temelde dort isi cok iyi yapar:

  • Statik dosya sunucusu: HTML, CSS, JavaScript, resim ve video gibi dosyalari dogrudan ve cok hizli sunar.
  • Ters proxy (reverse proxy): Arka plandaki bir uygulamanin (Node.js, Python, PHP-FPM, Java vb.) onunde durarak istekleri yonlendirir.
  • Yuk dengeleyici (load balancer): Gelen trafigi birden fazla arka uc sunucuya dagitir.
  • SSL/TLS sonlandirma: Sifreli HTTPS baglantilarini karsilayip arka uygulamaya yuku yikar.

Bu cok yonluluk, Nginx’i hem kucuk bir blog hem de yuksek trafikli bir e-ticaret sitesi icin uygun bir cozum haline getirir.

Mail hosting 1 ay ücretsiz

Nginx Kurulumu

Cogu dagitimda kurulum tek komuttur:

# Ubuntu/Debian
sudo apt update && sudo apt install nginx

# AlmaLinux/RHEL
sudo dnf install nginx

# Servisi baslat ve onyuklemede etkinlestir
sudo systemctl enable --now nginx

Kurulumdan sonra sunucunuzun IP’sine tarayicidan girdiginizde Nginx’in varsayilan karsilama sayfasini gormelisiniz. Surumu dogrulamak icin:

nginx -v          # surum bilgisi
systemctl status nginx   # servis durumu (active/running olmali)

Dagitim depolarindaki Nginx genelde kararli ve guvenli olsa da, en yeni surum ozelliklerine (orn. HTTP/3 destegi) ihtiyaciniz varsa Nginx’in resmi deposunu (nginx.org) ekleyerek guncel surumu kurabilirsiniz.

Yapilandirma Dosyalarinin Yapisi

Nginx’in ana yapilandirma dosyasi /etc/nginx/nginx.conf dosyasidir. Burada genel ayarlar tanimlanir ve include direktifiyle site ozelinde dosyalar dahil edilir. Iki yaygin dizin duzeni vardir; hangi yapida oldugunuzu bilmek hata aramayi cok kolaylastirir:

Yapi Dizin Aciklama
Debian/Ubuntu paketi /etc/nginx/sites-available + sites-enabled Siteyi available icine yazip enabled icine symlink kurarsiniz; siteyi acip kapatmak symlink ile yonetilir.
Resmi nginx.org / RHEL paketi /etc/nginx/conf.d/*.conf Bu dizindeki tum .conf dosyalari otomatik dahil edilir.

Yapilandirma hiyerarsisi main > http > server > location seklinde ic ice baglamlardan (context) olusur. Bir server blogu tek bir siteyi (sanal sunucuyu), location ise o site icindeki URL yollarini temsil eder.

Temel Site Yapilandirmasi

Bir site icin yapilandirma dosyasi (orn. /etc/nginx/conf.d/site.conf) soyle olur:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Burada root sitenin dosyalarinin bulundugu dizini, server_name ise domaini belirtir. try_files ise once istenen dosyayi, sonra dizini dener; ikisi de yoksa 404 dondurur. Birden fazla siteyi ayni sunucuda barindirmak icin her site ayri bir server blogu olarak tanimlanir.

En Sik Kullanilan Direktifler

Direktif Ne Ise Yarar
listen Dinlenecek port ve protokol (orn. 80, 443 ssl).
server_name Bu bloga yonlenecek domain adlari.
root Dosyalarin koklendigi dizin.
index Dizin istendiginde sunulacak varsayilan dosya.
location Belirli URL yollarina ozel kurallar.
return / rewrite Yonlendirme ve URL yeniden yazma.

Performans icin Temel Ayarlar

Ana nginx.conf dosyasinda birkac ayar, varsayilanlara gore belirgin bir hiz farki yaratir. Guncel oneri, calisan surec (worker) sayisini CPU cekirdek sayisina otomatik esitlemektir:

# nginx.conf icinde
worker_processes auto;          # cekirdek basina bir worker

events {
    worker_connections 1024;    # her worker'in es zamanli baglanti siniri
}

http {
    sendfile on;                # dosyalari cekirdek seviyesinde, hizli gonder
    tcp_nopush on;
    keepalive_timeout 65;
    server_tokens off;          # surum bilgisini gizle (guvenlik)
}

worker_processes auto ayari, Nginx’in cekirdek sayisina gore otomatik olceklenmesini saglar. Docker gibi konteyner ortamlarinda konteynere atanan cekirdek sayisi ana makineden az olabilir; bu durumda worker_processes degerini konteynere ayrilan cekirdek sayisina elle ayarlamak daha verimlidir.

Gzip Sikistirma

Metin tabanli icerikleri sikistirmak, indirme boyutunu ve dolayisiyla sayfa acilis suresini ciddi olcude azaltir. http baglaminda:

gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript
           text/xml application/xml text/javascript image/svg+xml;

Zaten sikistirilmis olan JPEG/PNG/MP4 gibi dosyalari yeniden sikistirmaya calismak kazanc saglamaz; bu yuzden yalnizca metin tabanli turleri listeye eklemek dogru yaklasimdir.

HTTPS ve Ucretsiz SSL

Bugun her sitenin HTTPS uzerinden sunulmasi standarttir; tarayicilar HTTP siteleri “guvenli degil” olarak isaretler. Ucretsiz SSL sertifikasi icin Let’s Encrypt (certbot) en yaygin secimdir:

# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot, 443 bloglu yapilandirmayi otomatik ekler, HTTP’den HTTPS’e yonlendirme kurar ve sertifika yenilemesini zamanlanmis bir gorevle (timer/cron) halleder. Elle yapilandirmak isterseniz temel HTTPS blogu soyle gorunur:

server {
    listen 443 ssl;
    http2 on;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    root /var/www/example;
    index index.html;
}

# HTTP'yi HTTPS'e yonlendir
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Yalnizca TLSv1.2 ve TLSv1.3 protokollerine izin vermek, eski ve guvensiz surumleri devre disi birakir.

Ters Proxy (Reverse Proxy) Yapilandirmasi

Nginx’in en cok kullanildigi senaryolardan biri, arka plandaki bir uygulamanin (orn. 3000 portunda calisan bir Node.js veya Python servisi) onunde durmaktir. Boylece SSL’i Nginx halleder, uygulama yalnizca dahili portta calisir:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Buradaki proxy_set_header satirlari kritik: arka uygulamanin gercek ziyaretci IP’sini (X-Real-IP), orijinal host adini (Host) ve isteğin HTTP mi HTTPS mi oldugunu (X-Forwarded-Proto) dogru gormesini saglar. Bunlar olmadan uygulama tum istekleri “127.0.0.1’den geliyor” gibi gorur.

Yuk Dengeleme (Load Balancing)

Birden fazla arka uc sunucunuz varsa, upstream blogu ile trafigi dagitabilirsiniz:

upstream backend {
    server 10.0.0.11:3000;
    server 10.0.0.12:3000;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

Varsayilan dagitim yontemi round-robin (sirayla) calisir; ihtiyaca gore least_conn (en az baglantili sunucuya yonlendirme) gibi yontemler de eklenebilir.

Test ve Yeniden Yukleme

Her degisiklikten sonra yapilandirmayi test edip kesintisiz yeniden yukleyin:

nginx -t                      # yapilandirma sozdizimi testi
sudo systemctl reload nginx   # kesintisiz yeniden yukle

reload aktif baglantilari kesmez (graceful); restart keser, bu yuzden canlida reload tercih edin. Asagidaki tablo en cok kullanilan komutlari ozetliyor:

Komut Etkisi Ne Zaman
nginx -t Yapilandirmayi test eder, uygulamaz. Her degisiklikten ONCE/sonra.
systemctl reload nginx Yeni yapilandirmayi kesintisiz uygular. Canli ortamda varsayilan secim.
systemctl restart nginx Servisi tamamen yeniden baslatir (kisa kesinti). Yalnizca reload yetmediginde.
systemctl status nginx Servisin calisip calismadigini gosterir. Sorun teshisinde.

Dikkat Edilmesi Gerekenler

  • Degisiklikten sonra mutlaka nginx -t ile test edin; hatali yapilandirma reload ile devreye girmez ve servisi riske atmaz.
  • Ubuntu’da dagitim paketinde siteler genelde /etc/nginx/sites-available + sites-enabled (symlink) yapisindadir; resmi nginx.org paketinde /etc/nginx/conf.d/ kullanilir.
  • Guvenlik duvarinda (ufw/firewalld) 80 ve 443 portlarini acmayi unutmayin.
  • HTTPS icin Let’s Encrypt (certbot) ile ucretsiz SSL kurabilirsiniz; sertifika yenilemesinin zamanlanmis gorevle calistigini dogrulayin.
  • server_tokens off; ile Nginx surum bilgisini gizleyin; bu, basit bir guvenlik onlemidir.
  • Log dosyalarini (/var/log/nginx/access.log ve error.log) bir hata aninda ilk bakacaginiz yer olarak unutmayin.

Nginx’i Nerede Calistirmali?

Nginx’in tum yapilandirma esnekliginden yararlanmak icin root erisimine ihtiyaciniz vardir; bu da paylasimli hosting yerine bir VPS veya sunucu gerektirir. Sunucu altyapisi tarafinda donanim ve ag kalitesi performansi dogrudan etkiler.

Alastyr’da hizmetler, Izmir’deki kendine ait (kiralik olmayan), N+1 yedekli, Tier III standartlarinda kurulu veri merkezinde barindirilir. AS3188 bagimsiz agi ve Turk Telekom + TurkNet uzerinden 40 Gbit yedekli baglantisiyla, RIPE NCC uyesi bir altyapi uzerinde calisirsiniz. Dell EMC Unity 650F all-flash depolama ve Intel Xeon Gold islemciler, Nginx’in olay tabanli mimarisinin hizini sonuna kadar kullanmaniza imkan tanir. Ustelik ucretsiz SSL, gunluk yedekleme, %99.9 uptime ve 7/24 destek standart olarak gelir.

Sikca Sorulan Sorular

Nginx ucretsiz mi?

Evet, acik kaynaklidir ve ucretsizdir; ticari surumu olan Nginx Plus, ek yonetim ve izleme ozellikleri sunar ancak cogu kullanim icin acik kaynak surum fazlasiyla yeterlidir.

Nginx ile Apache arasindaki fark ne?

Nginx olay tabanli mimarisiyle yuksek es zamanlilikta daha az kaynak tuketir ve daha verimlidir. Apache ise .htaccess ile dizin bazli yapilandirmaya izin verir; Nginx .htaccess desteklemez, tum kurallar merkezi yapilandirma dosyasinda tanimlanir.

nginx -t komutu ne ise yarar?

Yapilandirma dosyalarinin sozdizimini test eder ve hata varsa hangi satirda oldugunu soyler. Yapilandirmayi degistirdikten sonra reload etmeden once mutlaka calistirilmasi gereken bir guvenlik adimidir.

reload mi yoksa restart mi kullanmaliyim?

Canli ortamda reload tercih edin; yeni yapilandirmayi aktif baglantilari kesmeden uygular. restart ise servisi tamamen kapatip acar ve kisa bir kesintiye yol acar; yalnizca reload yetmediginde kullanin.

Nginx’e ucretsiz SSL nasil eklerim?

En yaygin yontem certbot ile Let’s Encrypt sertifikasi kurmaktir. certbot --nginx -d alanadi.com komutu sertifikayi kurar, 443 blogunu otomatik yapilandirir ve yenilemeyi zamanlar.

Nginx ters proxy olarak nasil calisir?

location blogu icinde proxy_pass http://127.0.0.1:PORT; satiriyla istekleri arka plandaki uygulamaya yonlendirir. Gercek ziyaretci IP’si ve host bilgisinin korunmasi icin proxy_set_header satirlarini eklemek onemlidir.

worker_processes degerini kaca ayarlamaliyim?

Cogu durumda worker_processes auto; idealdir; Nginx’i CPU cekirdek sayisina otomatik esitler. Docker gibi konteyner ortamlarinda konteynere ayrilan cekirdek sayisina elle ayarlamak daha verimli olabilir.

Bir sunucuda birden fazla site barindirabilir miyim?

Evet. Her site icin ayri bir server blogu (sanal sunucu) tanimlarsiniz ve server_name ile hangi domainin hangi bloga gidecegini belirtirsiniz. Bu yapiya “name-based virtual hosting” denir.

Nginx kurmak icin paylasimli hosting yeterli mi?

Hayir. Nginx’i kendiniz kurup yapilandirmak icin root erisimi gerekir; bu da bir VPS veya sunucu gerektirir. Paylasimli hosting ortamlarinda web sunucusu yapilandirmasi saglayicinin kontrolundedir.

Nginx Icin Guclu Sunucu

Root erisimli, all-flash NVMe depolamali VPS’lerde Nginx’i istediginiz gibi kurun ve yapilandirin. Izmir’deki kendi veri merkezimiz, ucretsiz SSL ve 7/24 destekle.

VPS/Sunucu Cozumleri →

Türkiye'nin En Çok Tavsiye Edilen Domain, Hosting ve Bulut Servis Sağlayıcısı
İnternet sitesi Alastyr İnternet Sitesi
Yazı oluşturuldu 488

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön