VPS.TC
| $
Sunucu Durumu
Turkey İstanbul, Türkiye
Aktif
USA New York, ABD
Aktif
Sepet Toplamı:
Sepeti Görüntüle
Ubuntu’da Nginx Kurulumu ve İlk Yapılandırma
Linux

Ubuntu’da Nginx Kurulumu ve İlk Yapılandırma

Defne avatarı Defne 12 dk okuma 0 Yorumlar
Paylaş:

Hızlı Özet – Ubuntu Nginx Kurulumu

Ubuntu'da Nginx kurulumunun temel akışı paket yükleme, servis doğrulama, port açma ve alan adı için server block hazırlamadır. Her yapılandırma değişikliği reload öncesinde test edilmelidir.

  • Paketi kurun — Paket listesini güncelleyip Nginx'i sudo apt install nginx komutuyla yükleyin.
  • Servisi doğrulayın — systemctl ve curl ile Nginx'in çalıştığını ve yerel HTTP yanıtı verdiğini kontrol edin.
  • Portları açın — UFW veya sağlayıcı firewall'ında TCP 80 ve HTTPS kullanacaksanız TCP 443'e izin verin.
  • Server block oluşturun — Alan adını, web kök dizinini, log yollarını ve try_files kuralını site dosyasında tanımlayın.
  • Yapılandırmayı test edin — Reload işleminden önce nginx -t ile sözdizimini ve dosya yüklenebilirliğini doğrulayın.
  • DNS ve HTTPS ekleyin — A veya AAAA kaydını sunucuya yönlendirin, HTTP erişimi çalıştıktan sonra TLS sertifikası yapılandırın.

Ubuntu'da Nginx kurulumu, apt ile paketi yüklemekten ibaret değildir. Servisin çalıştığını doğrulamak, TCP 80 ve 443 erişimini açmak, alan adı için doğru server block oluşturmak ve her değişiklikten önce nginx -t çalıştırmak gerekir. Bu sıra, yanlış site yanıtı ve gereksiz kesinti riskini belirgin biçimde azaltır.

Ubuntu Nginx kurulumu için önce ne hazırlanmalı?

Ubuntu sunucuda Nginx kurulumu için güncel paket listesi alınır, nginx paketi apt ile yüklenir ve servis durumu doğrulanır. Ardından güvenlik duvarında TCP 80 açılır, alan adı için bir server block hazırlanır, yapılandırma nginx -t ile test edilir ve servis yeniden yüklenir. HTTPS kullanılacaksa sonraki aşamada TCP 443 ile TLS sertifikası eklenir.

Bu sıra küçük görünebilir; fakat her adım farklı bir sorunu ayırır. Servis çalışmıyorsa DNS’e, firewall kapalıysa Nginx yapılandırmasına odaklanmak gereksiz zaman kaybettirir.

🚀 VPS Sunucu ile Hızınızı Artırın!

Yüksek performanslı SSD depolama ve %99.9 uptime garantisi ile projelerinizi hızlandırın.

VPS Sunucu Kirala

Ubuntu Nginx kurulumu nasıl yapılır?

İşlemler Ubuntu 22.04 veya 24.04 üzerinde, sudo yetkisine sahip bir kullanıcıyla uygulanabilir. Root hesabıyla sürekli oturum açmak yerine komutların başına sudo eklemek yetki kapsamını daraltır. Kurulumdan önce işletim sistemi paketlerini güncellemek, özellikle yeni açılmış bir VPS üzerinde eski paket listesiyle çalışmayı önler.

sudo apt update
sudo apt install nginx

apt update depolardaki paket indekslerini yeniler; tek başına paketleri yükseltmez. apt install nginx ise Nginx ve gerekli bağımlılıkları kurar. Kurulum sırasında Ubuntu genellikle servisi başlatır. Yine de bunu varsaymak yerine servis durumunu açıkça kontrol etmek daha güvenlidir.

sudo systemctl enable --now nginx
sudo systemctl status nginx --no-pager

enable --now iki işi birlikte yapar: Nginx’in açılışta başlamasını etkinleştirir ve servisi hemen çalıştırır. Durum çıktısında Active: active (running) görülmelidir. Yerel HTTP yanıtını da test edin.

☁️ Cloud Sunucu ile Esneklik Kazanın!

Ölçeklenebilir kaynaklar ve anlık yedekleme ile bulutun gücünü deneyimleyin.

Bulut Sunucu Paketleri
curl -I http://127.0.0.1

Normal bir kurulumda HTTP durum satırında 200 OK veya yönlendirme yapılandırmasına bağlı başka bir başarılı yanıt görülür. Ubuntu’nun varsayılan Nginx sayfası tarayıcıdan açılıyorsa servis temel düzeyde çalışıyor demektir; alan adı ve uygulama ayarları henüz yapılmış sayılmaz.

Kurulumu doğrulayınsystemctl ve curl çıktılarında servisin çalıştığını görmeden sanal host yapılandırmasına geçmeyin.

İpucu

Kurulumdan hemen sonra tarayıcıya geçmek yerine önce curl -I http://127.0.0.1 çalıştırın. Böylece DNS ve firewall sorunlarını Nginx servis sorunlarından ayırabilirsiniz.

UFW ile HTTP ve HTTPS portları nasıl açılır?

İnternetten erişilecek bir web sunucusunda TCP 80 HTTP, TCP 443 ise HTTPS için kullanılır. UFW etkinse bu portlara izin verilmelidir. SSH bağlantısı sürerken firewall kurallarını değiştiriyorsanız, kullandığınız SSH portuna erişimin açık olduğunu önce doğrulayın. Aksi halde web ayarından bağımsız bir erişim kesintisi oluşabilir.

sudo ufw status verbose
sudo ufw allow 'Nginx Full'
sudo ufw status numbered

Nginx Full profili TCP 80 ve 443 için izin ekler. Sadece HTTP kullanılan geçici bir test ortamında sudo ufw allow 'Nginx HTTP' yeterlidir. UFW kapalıysa bu komutlar kural ekler; fakat trafiği filtrelemez. Bulut sağlayıcısının güvenlik grubu veya VPS panelindeki ağ firewall’ı da ayrıca kontrol edilmelidir.

Portun gerçekten dinlenip dinlenmediğini işletim sistemi üzerinden görmek için:

sudo ss -ltnp | grep -E ':(80|443)\s'

Çıktıda nginx işleminin 0.0.0.0:80 veya [::]:80 üzerinde dinlediği görülebilir. Yalnızca 127.0.0.1:80 görünüyorsa servis dış ağdan erişilecek şekilde dinlemiyor olabilir; ilgili listen satırını ve etkin yapılandırmayı inceleyin.

Firewall’ı dar tutun – yalnızca gereken TCP 22, 80 ve 443 portlarına izin verin. SSH portunuz 22 değilse kuralı kendi portunuza göre değiştirin.

Nginx yapılandırma dosyaları nerede?

Ubuntu paket kurulumu, Nginx yapılandırmasını birkaç ayrı dizine böler. Ana dosya /etc/nginx/nginx.conf olsa da site tanımları genellikle /etc/nginx/sites-available/ altında tutulur ve etkin siteler /etc/nginx/sites-enabled/ içindeki sembolik bağlantılarla seçilir.

Yol Görevi
/etc/nginx/nginx.conf Genel ayarlar ve diğer dosyaların dahil edilmesi
/etc/nginx/sites-available/ Hazır veya pasif site yapılandırmaları
/etc/nginx/sites-enabled/ Aktif server block sembolik bağlantıları
/var/www/html Ubuntu varsayılan site kök dizini
/var/log/nginx/ Access ve error log dosyaları

Bir dosyayı etkinleştirmek için kopyalamak yerine sembolik bağlantı kullanmak yönetimi kolaylaştırır. Siteyi devre dışı bırakmak için bağlantı kaldırılabilir, asıl yapılandırma dosyası korunur.

sudo ls -la /etc/nginx/sites-enabled/
sudo ls -la /etc/nginx/sites-available/

Ubuntu’nun varsayılan sitesi çoğu kurulumda default adıyla gelir. Alan adı yapılandırmasına geçmeden önce bu dosyanın tüm istekleri yakalayıp yakalamadığını bilmek gerekir. Birden fazla server block varsa Nginx, gelen isteğin Host başlığı ve dinlenen adres bilgisine göre eşleşme yapar.

Dikkat

Server block dosyasını sites-available içine yazmak tek başına yeterli değildir; sites-enabled altında sembolik bağlantı bulunmalıdır. Aynı alan adını tanımlayan eski bir dosya da beklenmeyen yanıt üretebilir.

Alan adı için server block nasıl oluşturulur?

Nginx’te Apache sanal host kavramına benzeyen yapılandırma birimine server block denir. Örnek alan adı example.com, site kökü ise /var/www/example.com/public olsun. Önce dizin oluşturulmalı ve web sunucusunun okuyabileceği bir dosya yerleştirilmelidir.

sudo mkdir -p /var/www/example.com/public
sudo chown -R $USER:$USER /var/www/example.com/public
sudo chmod -R 755 /var/www/example.com
printf '%s\n' '<!doctype html><html lang="tr"><body><h1>Nginx çalışıyor</h1></body></html>' | tee /var/www/example.com/public/index.html

Üretim ortamında dosyaların sahipliği uygulamanın çalışma modeline göre belirlenmelidir. Her şeyi www-data kullanıcısına vermek her senaryoda doğru değildir; deploy kullanıcısının yazma ihtiyacı ile Nginx’in yalnızca okuma ihtiyacı birbirinden ayrılabilir.

Şimdi server block dosyasını oluşturun:

sudo vim /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;
    root /var/www/example.com/public;
    index index.html index.htm;

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

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

server_name alan adı eşleşmesini, root dosyaların aranacağı dizini, index ise dizin isteğinde denenecek dosyaları belirtir. try_files mevcut dosyayı sunar; dosya bulunamazsa 404 döndürür. PHP, Node.js veya başka bir uygulama kullanılıyorsa bu bölüm uygulamanın gerektirdiği proxy ya da FastCGI ayarlarıyla değiştirilir.

Siteyi etkinleştirin ve varsayılan siteyi gerekiyorsa devre dışı bırakın:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

nginx -t önce sözdizimini, ardından yapılandırmanın yüklenebilirliğini kontrol eder. syntax is ok ve test is successful mesajları beklenir. reload çalışan worker süreçlerini kontrollü biçimde yeniler; basit yapılandırma değişikliklerinde restart kullanmak gereksiz kesinti yaratabilir.

Server block’u etkinleştirin – sembolik bağlantıyı oluşturduktan sonra mutlaka nginx -t çalıştırın ve yalnızca başarılı testten sonra reload yapın.

Alan adı DNS kaydı Nginx’e nasıl bağlanır?

Nginx’in doğru çalışması için alan adının DNS kayıtları sunucunun genel IP adresini göstermelidir. IPv4 için A, IPv6 için AAAA kaydı kullanılır. DNS panelindeki değer kadar, sunucunun gerçekten o IP üzerinde dinlemesi de önemlidir.

dig +short A example.com
dig +short AAAA example.com
curl -I -H 'Host: example.com' http://SUNUCU_IP

İlk iki komut DNS’in döndürdüğü adresleri gösterir. Üçüncü komut, DNS yayılımını beklemeden belirli bir sunucuya Host başlığıyla istek göndermeye yarar. Gerçek alan adını kullanarak yapılan testte beklenen server block yanıtı alınmalıdır.

DNS değişikliklerinin görünür hale gelme süresi TTL, resolver önbelleği ve sağlayıcı davranışına göre değişebilir. Bu nedenle tarayıcıda eski sonuç görülmesi her zaman Nginx hatası değildir. DNS_PROBE_FINISHED_NXDOMAIN Hatası Nasıl Çözülür? başlıklı içerikte de alan adının çözümlenemediği durumlar ayrıca ele alınıyor.

DNS’i terminalden doğrulayın – paneldeki kaydı doğru kabul etmek yerine dig +short ile A ve AAAA sonuçlarını sunucunun adresleriyle karşılaştırın.

Örnek

DNS kaydı henüz yayılmadıysa, curl -I -H 'Host: example.com' http://SUNUCU_IP komutu doğru server block'un doğrudan test edilmesini sağlar. Böylece tarayıcı önbelleği veya resolver sonucu devreye girmeden eşleşme kontrol edilir.

Nginx yapılandırması nasıl test edilir ve hata ayıklanır?

Bir değişiklikten sonra ilk başvurulacak komut nginx -t olmalıdır. Komut hata verirse reload yapılmaz ve çalışan yapılandırma korunur. Hata mesajındaki dosya yolu ile satır numarası doğrudan ilgili bölüme götürür.

sudo nginx -t
sudo nginx -T | less

nginx -T ana dosyadan dahil edilen tüm yapılandırmayı birleştirilmiş halde yazdırır. Aynı server_name değerinin birden fazla dosyada bulunması beklenmeyen eşleşmelere yol açabilir; bu çıktı çakışmaları aramak için kullanışlıdır.

Servis başlatılamıyor veya istekler hata veriyorsa sistem günlükleri incelenmelidir.

sudo journalctl -u nginx -b --no-pager
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/nginx/example.com.error.log

permission denied, yanlış dosya yolu, port çakışması ve eksik sertifika yolu sık rastlanan nedenlerdir. Uygulama arka uçta çalışıyor olsa bile Nginx’in verdiği 502 Bad Gateway hatası, proxy hedefinin dinlememesi veya Unix socket izinlerinin yanlış olmasıyla ilişkilendirilebilir. Bu durumda 502 Bad Gateway Hatası Nedir ve Nasıl Çözülür? içeriğindeki upstream kontrol adımları izlenebilir.

Logu okuyun – yeniden başlatmadan önce journalctl, Nginx error logu ve dinleyen portları birlikte inceleyin.

İlk yapılandırmadan sonra HTTPS ne zaman eklenir?

HTTP üzerinden alan adı erişimi doğrulandıktan sonra HTTPS yapılandırılmalıdır. TLS sertifikası alınmadan önce DNS kaydı doğru olmalı, TCP 80 ve 443 dışarıdan erişilebilir durumda bulunmalıdır. Let’s Encrypt sertifikaları için kullanılan doğrulama yöntemine göre HTTP-01 doğrulamasında port 80 gerekir.

Ubuntu üzerinde Certbot kurulumu ve sertifika yönetimi için dağıtımın güncel resmi yönergeleri takip edilmelidir. Sertifika alındıktan sonra Nginx server block’una 443 dinleyicisi, sertifika yolları ve HTTP’den HTTPS’e yönlendirme eklenir. Sertifika yenileme görevinin gerçekten çalıştığı, yalnızca kurulum anında değil, certbot renew --dry-run ile ayrıca sınanmalıdır.

HTTPS yönlendirmesi yapılırken proxy arkasındaki kurulumlarda X-Forwarded-Proto gibi başlıkların doğru işlenmesi gerekir. Aksi halde uygulama HTTPS isteğini HTTP sanıp sonsuz yönlendirme döngüsü oluşturabilir. WordPress kurulumu için hazırlanan VPS’te WordPress Kurulumu: Adım Adım Rehber içeriğinde Nginx, PHP-FPM ve alan adı katmanlarının birlikte ele alındığı akış bulunabilir.

Sahadan not

Bayram sabahı bir müşterinin alan adında sertifika süresinin dolduğunu fark ettim. certbot renew –dry-run çıktısında renewal görevinin başarısız olduğunu, systemctl list-timers içinde de beklenen zamanlayıcının bulunmadığını gördüm; görevi düzelttikten sonra sertifikayı yenileyip Nginx'i reload ettim.

Nginx kurulumu sırasında hangi izin ve bakım ayarları gerekir?

Nginx’in web kök dizinini okuyabilmesi için tüm üst dizinlerde geçiş izni, dosyalarda okuma izni bulunmalıdır. Her yere chmod 777 vermek çözüm değildir; erişim sorununu geniş yetkiyle örtüp güvenlik sınırlarını kaldırır. Uygulamanın yazması gereken uploads veya cache dizinleri ayrı değerlendirilmelidir.

Loglar /var/log/nginx/ altında birikir. Ubuntu paketi logrotate entegrasyonu sağlasa da disk kullanımını ve rotasyon durumunu izlemek gerekir.

sudo du -sh /var/log/nginx
sudo logrotate -d /etc/logrotate.d/nginx
sudo systemctl is-enabled nginx

İlk komut logların kapladığı alanı, ikinci komut rotasyon simülasyonunu, üçüncü komut ise açılışta otomatik başlatma durumunu gösterir. Nginx’i güncellemeden önce mevcut yapılandırmayı ve uygulama servislerini not almak, geri dönüşü kolaylaştırır.

İşletim sistemi güncellemeleri sırasında apt bir yapılandırma dosyası için seçim sorusu çıkarabilir. Yerel değişiklikler doğrudan paket dosyasına değil, site dosyalarına ve ayrı include dosyalarına yapıldığında bu risk azalır. Yapılandırma dosyalarını sürüm kontrolünde tutmak değişiklik geçmişini görünür kılar; gizli anahtarları aynı depoya koymayın.

İzinleri sınırlayın – Nginx’in yalnızca okuması gereken dizinleri yazılabilir hale getirmeyin ve log rotasyonunu düzenli kontrol edin.

Nginx'i Yayına Almadan Önce Kontrol Edin

  • Ubuntu paket listesini güncelleyin.
  • Nginx servisinin active durumunu doğrulayın.
  • SSH bağlantısını koruyarak firewall kurallarını kontrol edin.
  • TCP 80 ve 443 erişimini test edin.
  • Alan adı için doğru A veya AAAA kaydını oluşturun.
  • Server block sembolik bağlantısını kontrol edin.
  • Reload öncesinde nginx -t komutunu çalıştırın.

İlk alan adınızı bağladıktan sonra HTTP yanıtını doğrulayın; HTTPS ve uygulama proxy ayarlarını ayrı değişiklikler olarak, her seferinde nginx -t kontrolüyle ilerletin.

VPS paketlerini inceleyin

Sık Sorulan Sorular

Ubuntu'da Nginx nasıl kurulur?

Önce paket listesini yenileyin: sudo apt update. Ardından sudo apt install nginx komutunu çalıştırın. Kurulumdan sonra sudo systemctl enable –now nginx ile servisi etkinleştirip başlatın. sudo systemctl status nginx –no-pager ve curl -I http://127.0.0.1 komutlarıyla servisin çalıştığını doğrulayın.

Nginx Ubuntu'da hangi portu kullanır?

Varsayılan HTTP dinleyicisi TCP 80, HTTPS dinleyicisi TCP 443'tür. Nginx'in hangi adres ve portlarda dinlediğini sudo ss -ltnp | grep -E ':(80|443)\s' komutuyla görebilirsiniz. UFW, bulut güvenlik grubu veya harici firewall kullanılıyorsa ilgili portlara ayrıca izin verilmelidir.

Ubuntu Nginx server block nereye yazılır?

Site yapılandırması genellikle /etc/nginx/sites-available/alan-adi dosyasına yazılır. Etkinleştirmek için /etc/nginx/sites-enabled/ altında bu dosyaya sembolik bağlantı oluşturulur. Ardından sudo nginx -t ile test yapılır ve test başarılıysa sudo systemctl reload nginx çalıştırılır. Varsayılan site çakışma yapıyorsa bağlantısı kaldırılabilir.

Nginx yapılandırması nasıl test edilir?

sudo nginx -t komutu yapılandırmanın sözdizimini ve yüklenebilirliğini kontrol eder. Başarılı testte syntax is ok ve test is successful mesajları görülür. Tüm birleşik yapılandırmayı incelemek için sudo nginx -T, servis günlüklerini görmek için sudo journalctl -u nginx -b –no-pager kullanılabilir. Hata çözülmeden reload yapılmamalıdır.

Nginx neden 502 Bad Gateway verir?

502 Bad Gateway çoğunlukla Nginx'in proxy_pass ile bağlandığı uygulama servisinin çalışmaması, yanlış portta dinlemesi veya Unix socket izinlerinin hatalı olması nedeniyle oluşur. Önce error logu inceleyin, ardından ss -ltnp ile upstream portunu kontrol edin. PHP-FPM kullanılıyorsa socket yolunun dosya sistemiyle aynı olduğunu doğrulayın.

Nginx kurulumundan sonra HTTPS nasıl eklenir?

Önce alan adının DNS kaydı sunucuya yönelmeli ve HTTP erişimi çalışmalıdır. TCP 80 ile 443 dışarıdan erişilebilir olduktan sonra Certbot gibi resmi olarak belgelenen bir istemciyle sertifika alınabilir. Nginx server block'una sertifika yolları ve HTTPS yönlendirmesi eklenir; yenileme işlemi certbot renew –dry-run ile sınanmalıdır.

Kaynaklar

Defne avatarı
Yazar

Defne

vps.tc blog yazarı. Sistem yönetimi, Linux ve hosting dünyası üzerine yazıyor.