Ana Sayfa
Paylasim
Dosya Paylasim URL Kisalt
Sunucu
NRDP SSH Client Nginx Database Redis
Medya
BG Remover Media Tools
Araclar
Dev Tools Encoder Npost Data Tools Network VS Code Dev Containers
Diger
Utility

Nginx Yapilandirma Merkezi

Nginx Nedir?

Nginx (Engine-X olarak okunur) yuksek performansli bir web sunucusu ve reverse proxy'dir. Apache'ye gore daha az bellek kullanir ve daha fazla eslzamanli baglanti destekler.

  • Web Sunucusu: Statik dosyalari (HTML, CSS, JS, resimler) sunar
  • Reverse Proxy: Gelen istekleri backend uygulamalarina yonlendirir
  • Load Balancer: Trafigi birden fazla sunucu arasinda dagitir
  • SSL Termination: HTTPS sertifikalarini yonetir

Isletim Sistemi Sec

Sistem Paketlerini Guncelle

Oncelikle paket listesini guncelleyin:

sudo apt update && sudo apt upgrade -y

Nginx'i Kur

Nginx paketini yukleyin:

sudo apt install nginx -y

Servisi Baslat ve Etkinlestir

Nginx'i baslatin ve sistem acilisinda otomatik baslamasini saglayin:

sudo systemctl start nginx && sudo systemctl enable nginx

Firewall Ayarlari

UFW kullaniyorsaniz HTTP ve HTTPS portlarini acin:

sudo ufw allow 'Nginx Full'

Kurulumu Dogrula

Tarayicinizda sunucu IP adresine gidin veya:

curl http://localhost

Nginx karsilama sayfasini gormelisiniz.

Dosya Konumlari (Ubuntu/Debian)

  • /etc/nginx/nginx.conf - Ana yapilandirma dosyasi
  • /etc/nginx/sites-available/ - Site konfigurasyonlari (tanimli)
  • /etc/nginx/sites-enabled/ - Aktif site konfigurasyonlari (symlink)
  • /var/www/html/ - Varsayilan web root dizini
  • /var/log/nginx/ - Log dosyalari

EPEL Repository Ekle

Nginx, EPEL repository'de bulunur:

sudo yum install epel-release -y

Nginx'i Kur

Nginx paketini yukleyin:

sudo yum install nginx -y

Servisi Baslat ve Etkinlestir

sudo systemctl start nginx && sudo systemctl enable nginx

Firewall Ayarlari

Firewalld kullaniyorsaniz:

sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload

Dosya Konumlari (CentOS/RHEL)

  • /etc/nginx/nginx.conf - Ana yapilandirma dosyasi
  • /etc/nginx/conf.d/ - Site konfigurasyonlari (.conf dosyalari)
  • /usr/share/nginx/html/ - Varsayilan web root dizini
  • /var/log/nginx/ - Log dosyalari

Paket Listesini Guncelle

apk update

Nginx'i Kur

apk add nginx

Servisi Baslat ve Etkinlestir

rc-service nginx start && rc-update add nginx default

Dosya Konumlari (Alpine)

  • /etc/nginx/nginx.conf - Ana yapilandirma dosyasi
  • /etc/nginx/http.d/ - Site konfigurasyonlari
  • /var/www/localhost/htdocs/ - Varsayilan web root

Nginx'i Kur

sudo pacman -S nginx

Servisi Baslat ve Etkinlestir

sudo systemctl start nginx && sudo systemctl enable nginx

Temel Nginx Yapisi

Config Dosyasi Nasil Calisir?

Nginx konfigurasyonu hiyerarsik bloklar seklinde calisir:

http { server { listen 80; server_name example.com; location / { root /var/www/html; index index.html; } location /api { proxy_pass http://localhost:3000; } } }

Location Eslestirme Turleri

  • location / - Prefix eslestirme (/ ile baslayan tum URL'ler)
  • location = / - Tam eslestirme (sadece / URL'si)
  • location ~ \.php$ - Regex eslestirme (buyuk/kucuk harf duyarli)
  • location ~* \.(jpg|png)$ - Regex (buyuk/kucuk harf duyarsiz)
  • location ^~ /images/ - Prefix, regex'ten once degerlendirilir

Oncelik Sirasi: = (tam) > ^~ (prefix oncelikli) > ~ veya ~* (regex) > prefix (normal)

try_files Ne Ise Yarar?

Istenen dosyayi sirayla aramak icin kullanilir:

try_files $uri $uri/ /index.html;

Bu ornek:

  1. Once istenen dosyayi ara ($uri)
  2. Bulamazsan dizin olarak ara ($uri/)
  3. Hala bulamazsan /index.html'e yonlendir (SPA icin ideal)

1. Template Sec

Reverse Proxy

Backend uygulamasina proxy yonlendirmesi

Static Site

HTML/CSS/JS statik dosya sunumu

SPA (Single Page App)

React, Vue, Angular uygulamalari

PHP-FPM

PHP uygulamalari icin FastCGI

Load Balancer

Birden fazla backend arasinda dagilim

WebSocket Proxy

WebSocket baglantilari icin proxy

SSL Redirect

HTTP'den HTTPS'e yonlendirme

Subdomain Proxy

Subdomain bazli yonlendirme

Path Based Routing Populer

Farkli path'leri farkli backend'lere yonlendir

Multi Domain Yeni

Birden fazla domain tek sunucuda

Hangi Template'i Secmeliyim?

  • Reverse Proxy: Node.js, Python, .NET gibi backend uygulamalarini yayinlamak icin
  • Static Site: Sadece HTML/CSS/JS dosyalari sunmak icin
  • SPA: React, Vue, Angular gibi tek sayfa uygulamalari icin
  • PHP-FPM: WordPress, Laravel gibi PHP uygulamalari icin
  • Load Balancer: Yuksek trafik icin birden fazla sunucu kullanmak icin
  • WebSocket: Gercek zamanli uygulamalar (chat, oyun) icin
  • Path Based: /api, /admin gibi farkli path'leri farkli servislere yonlendirmek icin

SSL Sertifikasi Nedir?

SSL/TLS Sertifikasi, web sitenizdeki verilerin sifrelenmesini saglar. HTTPS kullanmak icin bir SSL sertifikasina ihtiyaciniz var.

  • Let's Encrypt: Ucretsiz, otomatik ve acik bir sertifika otoritesi
  • Certbot: Let's Encrypt sertifikalarini otomatik alan ve yenileyen arac
  • Gecerlilik: Let's Encrypt sertifikalari 90 gun gecerlidir (otomatik yenilenir)

Onemli Gereksinimler

  • Domaininizin DNS kayitlari sunucunuzun IP adresine yonlendirilmis olmali
  • 80 ve 443 portlari acik olmali
  • Nginx kurulu ve calisiyor olmali

Certbot Kurulumu

Certbot ve Nginx Plugin'i Kur

sudo apt install certbot python3-certbot-nginx -y

Sertifika Al (Otomatik Nginx Yapilandirmasi)

Bu komut sertifikayi alir VE nginx config'ini otomatik gunceller:

sudo certbot --nginx -d example.com -d www.example.com

E-posta adresinizi girin ve sartlari kabul edin. HTTP'den HTTPS'e yonlendirme icin "2" secin.

Otomatik Yenilemeyi Test Et

sudo certbot renew --dry-run

EPEL ve Certbot Kur

sudo yum install epel-release -y && sudo yum install certbot python3-certbot-nginx -y

Sertifika Al

sudo certbot --nginx -d example.com -d www.example.com

Otomatik Yenileme (Cron)

echo "0 12 * * *" root certbot renew --quiet | sudo tee -a /etc/crontab > /dev/null

Certbot Kur

apk add certbot certbot-nginx

Sertifika Al

certbot --nginx -d example.com

Manuel Sertifika Kurulumu (Sadece Sertifika Al)

Nginx Config'ini Kendin Duzenlemek Istiyorsan

Certbot'un nginx'i degistirmesini istemiyorsan certonly kullan:

sudo certbot certonly --webroot -w /var/www/html -d example.com

Sertifikalar su konumlara kaydedilir:

  • /etc/letsencrypt/live/example.com/fullchain.pem - Sertifika + Chain
  • /etc/letsencrypt/live/example.com/privkey.pem - Private Key

Nginx'e Manuel SSL Ekleme

Config dosyaniza su satirlari ekleyin:

listen 443 ssl http2; 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; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers off;

Wildcard Sertifika (*.example.com)

DNS Challenge Gerektirir

Wildcard sertifikalar icin DNS dogrulamasi yapmaniz gerekir. DNS saglayicinizda TXT kaydi eklemeniz istenecek.

sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com

Certbot size bir TXT kaydi verecek. Bu kaydi DNS'inize ekleyin ve Enter'a basin.

Sertifika Yonetimi

Mevcut Sertifikalari Listele

sudo certbot certificates

Sertifikayi Yenile

sudo certbot renew

Belirli Sertifikayi Sil

sudo certbot delete --cert-name example.com

Sertifika Bilgisi

openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -text -noout

Nginx Servis Yonetimi

Baslat

sudo systemctl start nginx

Durdur

sudo systemctl stop nginx

Yeniden Baslat

sudo systemctl restart nginx

Config Yeniden Yukle (Kesintisiz)

sudo systemctl reload nginx

Durum Kontrol

sudo systemctl status nginx

Acilista Otomatik Baslat

sudo systemctl enable nginx

Config Test ve Dogrulama

Her Degisiklikten Once Test Et!

Nginx config'ini degistirdikten sonra, reload/restart yapmadan once MUTLAKA test edin:

sudo nginx -t

syntax is ok ve test is successful mesajlarini gormelisiniz.

Config Dosyasini Detayli Test Et

sudo nginx -T

Tum include edilen dosyalarla birlikte tam config'i gosterir.

Site Yonetimi (Ubuntu/Debian)

sites-available vs sites-enabled

  • sites-available/ - Tum site konfigurasyonlari burada saklanir
  • sites-enabled/ - Aktif siteler (symlink olarak)

Yeni Site Olustur

sudo nano /etc/nginx/sites-available/example.com

Siteyi Aktif Et (Symlink Olustur)

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Siteyi Deaktif Et (Symlink Sil)

sudo rm /etc/nginx/sites-enabled/example.com

Varsayilan Siteyi Kaldir

sudo rm /etc/nginx/sites-enabled/default

Log Dosyalari

Access Log (Son 100 Satir)

sudo tail -100 /var/log/nginx/access.log

Error Log (Son 100 Satir)

sudo tail -100 /var/log/nginx/error.log

Canli Log Takibi

sudo tail -f /var/log/nginx/access.log

Hata Logunu Canli Takip

sudo tail -f /var/log/nginx/error.log

Performans ve Debug

Nginx Versiyonu

nginx -v

Derleme Bilgileri

nginx -V

Aktif Baglantilari Gor

sudo ss -tlnp | grep nginx

Nginx Process'lerini Gor

ps aux | grep nginx

Sik Kullanilan Senaryolar

server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 80 default_server;
server_name _;
return 444;
}

444 kodu baglantıyı hemen kapatir (Nginx ozel kodu).

server {
listen 80;
server_name example.com;

location / { return 503; }

error_page 503 @maintenance;
location @maintenance {
root /var/www/maintenance;
rewrite ^(.*)$ /index.html break;
}
}
location /admin {
allow 192.168.1.0/24;
allow 10.0.0.1;
deny all;

proxy_pass http://localhost:3000;
}

Once htpasswd dosyasi olusturun:

sudo apt install apache2-utils && sudo htpasswd -c /etc/nginx/.htpasswd kullanici

Sonra nginx config'e ekleyin:

location /admin {
auth_basic "Giris Gerekli";
auth_basic_user_file /etc/nginx/.htpasswd;
}
MC U2Net