Nginx Kurulumu: Web Sunucusu ve Reverse Proxy
Nginx nedir, nasıl kurulur? Ubuntu sunucuda Nginx kurulumu, server block ayarları, Node.js için reverse proxy, Let's Encrypt SSL ve sık görülen hatalar.

İçindekiler
Nginx, dünyada en çok kullanılan web sunucularından biridir. Statik dosyaları hızla sunar, aynı anda binlerce bağlantıyı az bellekle karşılar ve en çok da reverse proxy olarak kullanılır: Ziyaretçiyi alan adınız ve SSL sertifikanızla karşılar, isteği arkada çalışan Node.js, Python ya da PHP uygulamanıza iletir. Nginx kurulumu birkaç komut sürer; asıl öğrenilmesi gereken, yapılandırma dosyalarının mantığıdır.
Bu rehberde Ubuntu sunucuya Nginx kurulumunu, server block yapılandırmasını, bir uygulamayı reverse proxy ile yayınlamayı, Let's Encrypt ile ücretsiz SSL almayı ve sık karşılaşılan hataları anlatıyoruz.
Nginx nedir, ne işe yarar?
Nginx üç temel iş için kullanılır:
- Web sunucusu: HTML, CSS, JavaScript ve görseller gibi statik dosyaları doğrudan sunar.
- Reverse proxy: Gelen istekleri arkadaki bir ya da birden fazla uygulamaya iletir. SSL, sıkıştırma ve önbellek gibi işleri uygulamanın yerine üstlenir.
- Yük dengeleyici: Trafiği aynı uygulamanın birden fazla kopyası arasında paylaştırır.
| Özellik | Nginx | Apache | LiteSpeed |
|---|---|---|---|
| Mimari | Olay tabanlı, az bellek | Süreç/iş parçacığı tabanlı | Olay tabanlı |
| .htaccess desteği | Yok | Var | Var (Apache uyumlu) |
| Tipik kullanım | VDS, reverse proxy, statik siteler | Klasik PHP siteleri | Paylaşımlı hosting, WordPress |
| Lisans | Açık kaynak | Açık kaynak | Ticari (OpenLiteSpeed açık kaynak) |
Kendi VDS'inizi yönetiyorsanız Nginx çoğu proje için en pratik seçimdir. Paylaşımlı hostingde ise web sunucusunu sağlayıcı yönetir; Nodesty web hosting paketleri örneğin LiteSpeed ile çalışır.
Ubuntu ve Debian'a Nginx kurulumu
Sunucunuza SSH ile bağlandıktan sonra:
sudo apt update
sudo apt install nginx
Kurulum bittiğinde Nginx otomatik olarak başlar. Durumunu kontrol edin:
systemctl status nginx
Güvenlik duvarında web trafiğine izin verin. Nginx Full profili 80 (HTTP) ve 443 (HTTPS) portlarını birlikte açar:
sudo ufw allow 'Nginx Full'
Tarayıcıda http://sunucu-ip adresini açtığınızda "Welcome to nginx!" sayfasını görüyorsanız kurulum tamamdır. Port ve güvenlik duvarı ayarlarını Port nedir? yazımızda ayrıntılı anlattık.
AlmaLinux ve Rocky Linux'ta kurulum sudo dnf install nginx ve sudo systemctl enable --now nginx komutlarıyla yapılır; güvenlik duvarında sudo firewall-cmd --permanent --add-service=http --add-service=https ve ardından sudo firewall-cmd --reload çalıştırılır.
Nginx yapılandırma dosyaları
| Yol | Ne içerir? |
|---|---|
/etc/nginx/nginx.conf | Ana yapılandırma; genellikle değiştirmeniz gerekmez |
/etc/nginx/sites-available/ | Her site için bir yapılandırma dosyası (server block) |
/etc/nginx/sites-enabled/ | Etkin sitelere giden kısayollar (symlink) |
/var/www/ | Sitelerin dosyaları için alışılmış klasör |
/var/log/nginx/ | access.log ve error.log günlükleri |
Ubuntu ve Debian'da siteler sites-available klasöründe tanımlanır ve sites-enabled klasörüne kısayol eklenerek etkinleştirilir. AlmaLinux'ta bu klasörler yoktur; site dosyaları doğrudan /etc/nginx/conf.d/ altına .conf uzantısıyla yazılır.
Herhangi bir değişiklikten sonra iki komutu alışkanlık hâline getirin:
sudo nginx -t
sudo systemctl reload nginx
nginx -t yapılandırmayı test eder ve hata varsa satır numarasıyla gösterir. reload, açık bağlantıları kesmeden yeni yapılandırmayı yükler.
İlk siteyi yayınlama: server block
Alan adınızın A kaydının sunucunuzun IP adresini gösterdiğinden emin olun; bunu DNS nedir? yazımızda anlattık. Ardından site için bir klasör oluşturun:
sudo mkdir -p /var/www/alanadiniz.com
echo "Merhaba Nginx" | sudo tee /var/www/alanadiniz.com/index.html
/etc/nginx/sites-available/alanadiniz.com dosyasını oluşturun:
server {
listen 80;
listen [::]:80;
server_name alanadiniz.com www.alanadiniz.com;
root /var/www/alanadiniz.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Siteyi etkinleştirip Nginx'i yeniden yükleyin:
sudo ln -s /etc/nginx/sites-available/alanadiniz.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
server_name, Nginx'in gelen isteği hangi siteye yönlendireceğini belirler. Aynı sunucuda birden fazla site barındırmak için her alan adına ayrı bir dosya oluşturmanız yeterlidir.
Reverse proxy: Node.js uygulamasını yayınlama
Bir Node.js, Python ya da başka bir uygulama genellikle 3000 gibi bir portta çalışır. Bu portu internete açmak yerine uygulamayı yalnızca 127.0.0.1 adresinde dinletin ve önüne Nginx koyun:
server {
listen 80;
listen [::]:80;
server_name app.alanadiniz.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
proxy_pass: İsteğin iletileceği uygulamanın adresi.X-Real-IPveX-Forwarded-For: Uygulamanın ziyaretçinin gerçek IP adresini görmesini sağlar. Bu başlıklar olmadan uygulama her isteği127.0.0.1'den geliyormuş gibi görür.UpgradeveConnection: WebSocket bağlantılarının çalışması için gereklidir. Socket.IO gibi gerçek zamanlı kütüphaneler kullanıyorsanız bu satırları atlamayın.
Uygulamanızı kapanmadan çalıştırmak için pm2 ya da systemd kullanabilirsiniz; ikisini de Discord botu 7/24 aktif tutma rehberimizde anlattık. Uygulamanız Docker'da çalışıyorsa portu 127.0.0.1:3000:3000 şeklinde yayınlayın; nedenini Docker kurulumu rehberimizde açıkladık.
Let's Encrypt ile ücretsiz SSL
Certbot, Let's Encrypt sertifikasını alır, Nginx yapılandırmanızı günceller ve otomatik yenilemeyi kurar:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
Certbot, alan adını doğrulamak için 80 portundan sunucunuza ulaşır. Bu yüzden komutu çalıştırmadan önce DNS kayıtlarının sunucuyu gösterdiğinden ve 80 portunun açık olduğundan emin olun. Kurulum sırasında HTTP isteklerinin HTTPS'e yönlendirilmesi de yapılandırılır.
Otomatik yenilemenin çalıştığını test etmek için:
sudo certbot renew --dry-run
SSL'in nasıl çalıştığını ve sertifika türlerini SSL sertifikası nedir? yazımızda anlattık.
Faydalı ayarlar
Server block içine ekleyebileceğiniz birkaç yaygın ayar:
client_max_body_size 50M;
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
location ~* \.(css|js|png|jpg|jpeg|webp|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public";
}
client_max_body_size: Yüklenebilecek en büyük dosya boyutu. Varsayılan 1 MB'tır; daha büyük yüklemeler413hatası verir.gzip: Metin tabanlı dosyaları sıkıştırarak sayfaların daha hızlı açılmasını sağlar.expires: Statik dosyaların tarayıcıda önbelleğe alınmasını sağlar.
Sunucu sürümünü yanıt başlıklarında gizlemek için /etc/nginx/nginx.conf içindeki http bloğunda server_tokens off; satırını etkinleştirin.
Sık karşılaşılan Nginx hataları
- 502 Bad Gateway: Nginx, arkadaki uygulamaya ulaşamıyor. Uygulamanın çalıştığını ve
proxy_passsatırındaki portun doğru olduğunu kontrol edin. - 504 Gateway Timeout: Uygulama çok geç cevap veriyor. Uzun süren işlemler için
proxy_read_timeoutdeğerini artırabilirsiniz, ama asıl çözüm uygulamanın yavaşlığını gidermektir. - 413 Request Entity Too Large: Yüklenen dosya
client_max_body_sizedeğerinden büyük. - 403 Forbidden: Nginx dosyalara erişemiyor ya da klasörde
indexdosyası yok. Dosya izinlerini verootyolunu kontrol edin. - Alan adı yerine varsayılan sayfa açılıyor:
server_namesatırı alan adıyla eşleşmiyor ya da sitesites-enabledklasörüne bağlanmamış.
Her durumda ilk bakmanız gereken yer hata günlüğüdür:
sudo tail -f /var/log/nginx/error.log
Nginx için Nodesty sunucuları
Nginx'i kendiniz kurup yönetmek için root erişimli bir sunucuya ihtiyacınız vardır. Nodesty AMD Ryzen 9 9950X VDS paketleri yüksek tek çekirdek hızıyla web uygulamalarınıza hızlı cevap verir; AMD EPYC 7763 VDS paketleri ise çok sayıda site ve veritabanı için bol RAM sunar. Her iki pakette de NVMe disk, L3–L7 nShield DDoS koruması ve 7 gün saklanan ücretsiz günlük yedekleme bulunur. Sunucu yönetmeden yalnızca bir web sitesi yayınlamak istiyorsanız LiteSpeed'li web hosting paketlerimiz daha pratik bir seçimdir.
Sıkça Sorulan Sorular
Nginx mi Apache mi kullanmalıyım?
Yeni bir VDS'te çoğu durumda Nginx daha iyi bir başlangıçtır. Aynı anda çok sayıda bağlantıyı az bellekle karşılar ve reverse proxy olarak çok yaygındır. Apache ise .htaccess desteği sayesinde klasör bazında ayar yapmayı kolaylaştırır; eski PHP uygulamaları bu dosyaya dayanıyorsa Apache işinizi kolaylaştırır.
Reverse proxy nedir?
Reverse proxy, ziyaretçinin isteğini karşılayıp arkada çalışan başka bir uygulamaya ileten sunucudur. Örneğin Nginx 80 ve 443 portlarında alan adınızı ve SSL'i karşılar, isteği 3000 portundaki Node.js uygulamanıza iletir. Böylece uygulamanız doğrudan internete açılmaz.
502 Bad Gateway hatası neden olur?
Nginx, isteği ilettiği uygulamaya ulaşamadığında 502 döner. En sık sebepler uygulamanın çalışmaması, yanlış porta yönlendirme yapılması ya da uygulamanın çökmesidir. Uygulamanın çalıştığını ve proxy_pass satırındaki port numarasının doğru olduğunu kontrol edin; ayrıntı /var/log/nginx/error.log dosyasındadır.
Bir sunucuda birden fazla site barındırabilir miyim?
Evet. Her alan adı için ayrı bir server block dosyası oluşturursunuz. Nginx gelen isteğin alan adına bakarak doğru siteyi sunar. Her site için ayrı SSL sertifikası da Certbot ile tek komutla alınabilir.
Let's Encrypt sertifikası ne kadar geçerli?
Let's Encrypt sertifikaları kısa sürelidir ve düzenli olarak yenilenmeleri gerekir. Certbot kurulumla birlikte otomatik yenileme zamanlayıcısını ekler; sudo certbot renew --dry-run komutuyla yenilemenin çalıştığını test edebilirsiniz.
Nodesty web hostingde Nginx yapılandırabilir miyim?
Web hosting paketlerimiz LiteSpeed web sunucusuyla çalışır ve sunucu yönetimi bize aittir; yapılandırmayı kontrol paneli ve .htaccess üzerinden yaparsınız. Nginx'i kendiniz kurup yönetmek istiyorsanız root erişimli bir VDS gerekir.
Yazar hakkında
Nodesty Ekibi · Altyapı ve Destek
Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.
İlgili yazılar

Load Balancer (Yük Dengeleyici) Nedir? Nasıl Çalışır?
Load balancer nedir, ne işe yarar? Yük dengeleme yöntemleri, sağlık kontrolleri, oturum yönetimi, Nginx ile yük dengeleme, HAProxy ve ne zaman gerekir.

Ubuntu Sürüm Yükseltme: Sunucuyu Yeni LTS Sürümüne Taşıma
Ubuntu sunucu yeni LTS sürümüne nasıl yükseltilir? Yedek, hazırlık, do-release-upgrade adımları, SSH bağlantısı, sonrası kontroller ve temiz kurulum.

Laravel Uygulamasını VDS'te Yayınlama Rehberi
Laravel uygulaması sunucuda nasıl yayınlanır? PHP-FPM, Composer, .env, veritabanı, dosya izinleri, Nginx, kuyruk işçisi, zamanlayıcı, SSL ve güncelleme.