CentOS 7 üzerinde Nginx Kurulumu ve Yapılandırması: Eksiksiz Adım Adım Kılavuz
Nginx, dünyanın en güçlü ve yaygın olarak benimsenen açık kaynaklı web sunucularından biridir. Olağanüstü performansı, düşük bellek ayak izi ve binlerce eşzamanlı bağlantıyı işleme yeteneği ile bilinir. Nginx, statik içerik sunmak, ters proxy olarak hareket etmek ve dağıtılmış sistemler arasında yük dengelemesi gerçekleştirmek için tercih edilen çözümdür.
Kişisel bir blog, yüksek trafikli bir e-ticaret platformu veya karmaşık bir mikro hizmetler mimarisi çalıştırıyor olsanız da, Nginx kullanıcılarınızın talep ettiği hız ve güvenilirliği sunar. Bu kapsamlı rehber, bir CentOS 7 sunucusunda Nginx’i yükleme, yapılandırma, güvenli hale getirme ve optimize etmenin her adımında size yol gösterir — sistem hazırlığından başlayarak ücretsiz Let’s Encrypt SSL sertifikası ile HTTPS’yi etkinleştirmeye kadar.
> Ön Koşullar: Root veya sudo erişimi olan bir CentOS 7 sunucusu. Takip etmek için güvenilir, yüksek performanslı bir ortama ihtiyacınız varsa, AlexHost’tan VPS Hosting‘i keşfetmeyi düşünün — tam root erişimi ve SSD depolama alanı ile zorlu iş yükleri için özel olarak tasarlanmıştır.
Adım 1: Sisteminizi Güncelleyin
Yeni bir yazılım kurmadan önce, CentOS 7 sisteminizin tamamen güncel olduğundan emin olmak kritik öneme sahiptir. Eski paketler, güvenlik açıklarını ve kurulum sürecini karmaşıklaştıran bağımlılık çatışmalarını ortaya çıkarabilir.
Terminalinizi açın ve aşağıdaki komutu çalıştırın:
sudo yum update -yBu komut, tüm yüklü paketleri en son kullanılabilir sürümlerine günceller. -y bayrağı tüm istemleri otomatik olarak onaylar ve işlemi etkileşimsiz hale getirir. Devam etmeden önce güncellemenin tamamen tamamlanmasını bekleyin.
Adım 2: YUM aracılığıyla Nginx’i yükleyin
Nginx, varsayılan CentOS 7 temel depolarında mevcut değildir. Önce RHEL tabanlı dağıtımlar için geniş bir ek yazılım paketi yelpazesi sağlayan EPEL (Extra Packages for Enterprise Linux) deposunu yüklemeniz gerekir.
EPEL deposunu yükleyin:
sudo yum install epel-release -yNginx’i yükleyin:
sudo yum install nginx -yBu komut, Nginx’i ve tüm gerekli bağımlılıkları indirir ve yükler. Yükleme tamamlandıktan sonra, yüklü sürümü şu komutla doğrulayabilirsiniz:
nginx -vŞuna benzer bir çıktı görmelisiniz:
nginx version: nginx/1.20.xAdım 3: Nginx Hizmetini Başlatın ve Etkinleştirin
Nginx yüklendikten sonra, hizmeti başlatmanız ve sunucu her yeniden başlatıldığında otomatik olarak başlaması için yapılandırmanız gerekir.
Nginx hizmetini başlatın:
sudo systemctl start nginxNginx’i önyüklemede başlatmak için etkinleştirin:
sudo systemctl enable nginxHizmetin çalıştığını doğrulamak için hizmet durumunu kontrol edin:
sudo systemctl status nginxHizmetin etkin (çalışıyor) olduğunu gösteren bir çıktı görmelisiniz:
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...Hizmet başlatılamıyorsa, tanılama bilgileri için /var/log/nginx/error.log konumundaki hata günlüklerini gözden geçirin.
Adım 4: Güvenlik Duvarını Yapılandırın
CentOS 7, varsayılan güvenlik duvarı yönetim aracı olarak firewalld kullanır. Varsayılan olarak, HTTP (port 80) ve HTTPS (port 443) trafiği engellenir. Web trafiğinin Nginx sunucunuza ulaşmasına izin vermek için bu portları açıkça açmanız gerekir.
HTTP trafiğine izin verin:
sudo firewall-cmd --permanent --add-service=httpHTTPS trafiğine izin verin:
sudo firewall-cmd --permanent --add-service=httpsDeğişiklikleri uygulamak için güvenlik duvarını yeniden yükleyin:
sudo firewall-cmd --reloadEtkin kuralları doğrulayın:
sudo firewall-cmd --list-allÇıktının services bölümünde hem http hem de https listelenmiş olmalıdır. Sunucunuz harici bir güvenlik duvarının veya güvenlik grubunun arkasında barındırılıyorsa (bulut sağlayıcılarında yaygındır), bu kuralların da 80 ve 443 numaralı portlardaki trafiğe izin vermek için güncellendiğinden emin olun.
Adım 5: Kurulumu Doğrulayın
Nginx’in doğru şekilde kurulduğunu ve içerik sunduğunu onaylamak için bir web tarayıcısı açın ve sunucunuzun genel IP adresine gidin:
http://your_server_ipVarsayılan Nginx hoş geldiniz sayfası ile karşılanmalısınız; bu sayfa *"Welcome to nginx!"* mesajını görüntüler. Bu, web sunucusunun çalışır durumda olduğunu ve internetten erişilebilir olduğunu onaylar.
Hoş geldiniz sayfasını görmüyorsanız, aşağıdakileri yeniden kontrol edin:
- Nginx hizmeti çalışıyor (
sudo systemctl status nginx) - Güvenlik duvarı kuralları doğru şekilde uygulanmış
- Sunucunuzun IP adresi doğru
- Port 80’i işgal eden başka bir hizmet (Apache gibi) yok
Adım 6: Nginx Server Blocks’u Yapılandırın
Nginx, farklı alan adları veya alt alan adları için istekleri nasıl işleyeceğini tanımlamak için server blocks‘u (Apache’nin sanal hostlarına işlevsel olarak eşdeğer) kullanır. Her server block tipik olarak /etc/nginx/conf.d/ dizini içinde ayrı bir yapılandırma dosyası olarak depolanır.
Ana Nginx yapılandırma dosyası /etc/nginx/nginx.conf konumunda bulunur. conf.d dizininden tüm .conf dosyalarını otomatik olarak yükleyen bir direktif içerir ve yapılandırmanızı modüler ve yönetimi kolay tutarak saklar.
Adım 6a: Yeni bir Server Block Yapılandırma Dosyası Oluşturun
Alan adınız için yeni bir yapılandırma dosyası oluşturun. example.com yerine gerçek alan adınızı yazın:
sudo nano /etc/nginx/conf.d/example.com.confAşağıdaki server block yapılandırmasını ekleyin:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
# Logging
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
# Deny access to hidden files
location ~ /. {
deny all;
}
}Açıklanan temel direktifler:
| Direktif | Açıklama |
|---|---|
listen 80 | Nginx’e port 80 (HTTP) üzerinde gelen bağlantıları dinlemesini söyler |
server_name | Bu server block’un yanıt vereceği alan adlarını tanımlar |
root | Web sitesi dosyalarının depolandığı belge kök dizinini belirtir |
index | Bir dizin istendiğinde Nginx’in sunacağı varsayılan dosyaları tanımlar |
try_files | İstenen URI’yi bir dosya olarak sunmaya çalışır, sonra bir dizin olarak ve hiçbiri yoksa 404 döndürür |
access_log / error_log | Daha kolay hata ayıklama için bu sanal host için ayrı günlük dosyaları tanımlar |
Dosyayı kaydedin ve editörden çıkın (Ctrl+X, sonra Y, sonra nano’da Enter).
Adım 7: Document Root’u ve Test Dosyasını Oluşturun
Server block yapılandırmasında tanımladığınız document root dizinini oluşturun:
sudo mkdir -p /var/www/example.com/htmlServer block’un düzgün çalışıp çalışmadığını doğrulamak için basit bir index.html dosyası oluşturun:
echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.htmlNginx’in dosyaları okuyabilmesi için doğru sahiplik ve izinleri ayarlayın:
sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/> SELinux Hakkında Not: CentOS 7 varsayılan olarak SELinux etkinleştirilmiş şekilde gelir. Nginx doğru izinlere rağmen web dosyalarınızı okuyamıyorsa, uygun SELinux bağlamını uygulamanız gerekebilir:
> “`bash
> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/
> “`
Adım 8: Nginx Yapılandırmasını Test Edin
Nginx’i yeniden başlatmadan önce yeni yapılandırmanızı uygulamak için her zaman söz dizimi hatalarını test edin. Yanlış yapılandırılmış bir dosya tüm web sunucunuzu çökertebilir.
Yapılandırma testini çalıştırın:
sudo nginx -tBaşarılı bir test aşağıdaki çıktıyı üretir:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulHatalar bildirilirse, yapılandırma dosyalarınızdaki belirtilen satır numaralarını dikkatle gözden geçirin ve devam etmeden önce sorunları düzeltin.
Değişiklikleri uygulamak için Nginx’i yeniden başlatın:
sudo systemctl restart nginxAlternatif olarak, etkin bağlantıları kesmeden yapılandırmayı yeniden yüklemek istiyorsanız (üretim ortamları için önerilir), şunu kullanın:
sudo systemctl reload nginxŞimdi tarayıcınızda alan adınıza gidin. Özel index.html sayfanızı görmelisiniz.
Adım 9: HTTPS’i Let’s Encrypt ile Kurun
Bir web sitesini düz HTTP üzerinden çalıştırmak, kullanıcılarınızı olası dinleme ve ortadaki adam saldırılarına maruz bırakır. Sitenizi HTTPS ile güvence altına almak artık isteğe bağlı değildir — kullanıcı güveni, veri bütünlüğü ve arama motoru sıralaması için temel bir gerekliliktir.
Let’s Encrypt ücretsiz, otomatik ve güvenilir SSL/TLS sertifikaları sağlar. Ayrıca AlexHost’tan gelen premium SSL Sertifikaları‘nı keşfedebilirsiniz; bunlar genişletilmiş doğrulama ve kuruluş tarafından doğrulanan seçenekler sunar ve işletme web siteleri için daha yüksek güven seviyeleri sağlar.
Certbot ve Nginx Eklentisini Yükleyin
sudo yum install certbot python2-certbot-nginx -ySSL Sertifikasını Alın ve Yükleyin
Certbot’u --nginx eklentisi ile çalıştırın; bu, HTTPS’i etkinleştirmek için Nginx yapılandırmanızı otomatik olarak değiştirir:
sudo certbot --nginx -d example.com -d www.example.comEtkileşimli istemleri izleyin:
- Yenileme bildirimleri için e-posta adresinizi girin
- Let’s Encrypt Hizmet Şartları’nı kabul edin
- HTTP trafiğini HTTPS’e yönlendirip yönlendirmeyeceğinizi seçin (kuvvetle tavsiye edilir — seçenek 2‘yi seçin)
Certbot otomatik olarak:
- Let’s Encrypt’ten imzalı bir sertifika alır
- SSL yönergelerini içerecek şekilde
/etc/nginx/conf.d/example.com.confdeğiştirir - HTTP’den HTTPS’e yönlendirmeyi yapılandırır
Tamamlandıktan sonra, HTTPS yapılandırmasını ziyaret ederek doğrulayın:
https://example.comTarayıcınız, bağlantının şifrelendiğini onaylayan bir asma kilit simgesi görüntülemelidir.
Adım 10: Sertifika Yenilemesini Otomatikleştirin
Let's Encrypt sertifikaları 90 gün geçerlidir. Bunları süresi dolmadan yenilemezseniz, siteniz ziyaretçilere güvenlik uyarıları gösterecek ve kullanıcı güvenini ile trafiği ciddi şekilde etkileyecektir.
Yenileme İşlemini Test Edin
Otomasyonu kurmadan önce, yenileme işleminin doğru çalışıp çalışmadığını doğrulayın:
sudo certbot renew --dry-runBaşarılı bir test çalışması, otomatik yenilemenin sorunsuz çalışacağını doğrular.
Otomatik Yenileme için Cron İşi Ayarlayın
Root crontab’ı açın:
sudo crontab -eSertifikaları günde iki kez kontrol etmek ve yenilemek için aşağıdaki satırı ekleyin (önerilen sıklık):
0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Cron zamanlamasının açıklaması:
0 0,12 * * *— Her gün gece yarısı ve öğlen saatinde çalışır--quiet— Bir hata oluşmadığı sürece çıktıyı bastırır--post-hook "systemctl reload nginx"— Başarılı bir yenilemeden sonra Nginx’i yeniden yükler ve kapalı kalma süresi olmadan yeni sertifikayı uygular
Crontab editörünü kaydedin ve kapatın. SSL sertifikalarınız artık otomatik olarak yenilenecek ve siteniz hiçbir manuel müdahale olmadan güvenli kalacaktır.
Nginx’de CentOS 7 için Performans Optimizasyonu İpuçları
Temel kurulumunuz tamamlandıktan sonra, Nginx performansını en üst düzeye çıkarmak için bu yapılandırma iyileştirmelerini göz önünde bulundurun:
Gzip Sıkıştırmasını Etkinleştirin
İstemcilere gönderilen yanıtların boyutunu azaltmak için aşağıdakileri nginx.conf içinde http {} bloğuna ekleyin:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;Tarayıcı Önbelleğini Yapılandırın
Sunucu yükünü azaltmak ve sayfa yükleme sürelerini iyileştirmek için statik varlıklar için cache-control başlıkları ekleyin:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Worker İşlemlerini Ayarlayın
/etc/nginx/nginx.conf içinde, worker işlemlerinin sayısını sunucunuzun CPU çekirdek sayısıyla eşleşecek şekilde ayarlayın:
worker_processes auto;
worker_connections 1024;> Kaynak yoğun uygulamalar veya yüksek trafikli web siteleri için, garantili CPU, RAM ve depolama kaynakları sağlayan ve komşu gürültüsü etkisi olmayan AlexHost’tan Dedicated Servers‘a yükseltmeyi düşünün.
Nginx ile Birden Fazla Web Sitesini Yönetme
Nginx'in en büyük güçlerinden biri, server blokları aracılığıyla tek bir sunucuda birden fazla web sitesini barındırabilmesidir. Her ek alan adı için basitçe:
.confiçinde yeni bir/etc/nginx/conf.d/dosyası oluşturun- Benzersiz bir
server_nameyönergesi tanımlayın rootyönergesini uygun belge köküne yönlendirinsudo nginx -tvesudo systemctl reload nginxkomutlarını çalıştırın
Web sunucunuzu, sanal ana bilgisayarlarınızı, veritabanlarınızı ve e-posta hesaplarınızı yönetmek için grafik bir arayüz tercih ederseniz, cPanel ile VPS seçeneğini göz önünde bulundurun — sunucu yönetimini esneklikten ödün vermeden basitleştiren tam yönetilen bir kontrol paneli çözümüdür.
Alternatif olarak, AlexHost tarafından sunulan VPS Kontrol Panelleri seçeneklerinin tamamını keşfedin; Plesk, DirectAdmin ve farklı iş akışlarına ve teknik tercihlere uygun diğer seçenekler dahildir.
CentOS 7’de Nginx Sorunlarını Giderme
| Sorun | Olası Neden | Çözüm | |
|---|---|---|---|
| Nginx başlatılamıyor | Port 80/443 zaten kullanımda | Çakışan işlemi tanımlamak için `sudo ss -tlnp | grep :80` komutunu çalıştırın |
| 403 Yasak hatası | Yanlış dosya izinleri veya SELinux bağlamı | chmod/chown kontrol edin ve SELinux için chcon uygulayın | |
| 502 Bad Gateway | Upstream backend (PHP-FPM, Node.js) çalışmıyor | Backend hizmetinin aktif olduğunu ve socket/port’un doğru olduğunu doğrulayın | |
| SSL sertifikası yenilenmiyor | Certbot port 80’e bağlanamıyor | Port 80’in açık olduğundan ve başka bir işlem tarafından engellenmediğinden emin olun | |
| Değişiklikler etkili olmuyor | Yapılandırma yeniden yüklenmedi | Her yapılandırma değişikliğinden sonra sudo systemctl reload nginx komutunu çalıştırın |
Sonuç
Nginx’i CentOS 7’de başarıyla yüklediniz, yapılandırdınız ve güvenliğini sağladınız. Sunucunuz artık yüksek performansla web siteleri barındırmaya, eşzamanlı bağlantıları verimli bir şekilde işlemeye ve içeriği şifreli HTTPS bağlantıları üzerinden sunmaya hazırdır — bunların tümü modern, üretim sınıfı bir web ortamı için gerekli niteliklerdir.
Başarılan işlemlerin özeti:
- ✅ CentOS 7 sistemini güncelledi ve EPEL deposu aracılığıyla Nginx yükledik
- ✅ Nginx hizmetini başlattık ve önyükleme sırasında otomatik başlatma için etkinleştirdik
- ✅ firewalld’yi HTTP ve HTTPS trafiğine izin verecek şekilde yapılandırdık
- ✅ Bir etki alanı için özel bir sunucu bloğu oluşturduk ve yapılandırdık
- ✅ Belge kökü için doğru dosya izinlerini ve SELinux bağlamlarını ayarladık
- ✅ Değişiklikleri uygulamadan önce yapılandırmayı söz dizimi hataları açısından test ettik
- ✅ Siteyi Certbot aracılığıyla ücretsiz Let’s Encrypt SSL sertifikası ile güvenliğe aldık
- ✅ Sertifika yenilemeyi bir cron işi ile otomatikleştirdik
Güvenli ve yüksek performanslı bir web sunucusunun bakımı devam eden dikkat gerektirir. Nginx’i düzenli olarak güncel tutun, erişim ve hata günlüklerinizi izleyin ve sitenizin gereksinimleri geliştikçe yapılandırmanızı gözden geçirin.
Nginx ile çalışan projeleriniz için sağlam bir barındırma temeli arıyorsanız, AlexHost tam bir çözüm yelpazesi sunmaktadır — daha küçük siteler için giriş seviyesi Paylaşımlı Web Barındırma‘dan talep gören uygulamalar için yüksek performanslı VPS ve özel altyapıya kadar. Her plan, kurumsal sınıf donanım, 7/24 teknik destek ve çalışma süresi ile güvenliğe olan bağlılık ile desteklenmektedir.
tasarruf edin