Kısa cevap: CentOS'ta NGINX kurmak için önce resmî NGINX deposunu ekleyin, sonra sudo dnf -y install nginx komutuyla kurun (CentOS 7'de yum). Servisi sudo systemctl enable --now nginx ile başlatın ve firewalld'da http ile https servislerine izin verin. Her yapılandırma değişikliğinden sonra sudo nginx -t ile doğrulayıp servisi yeniden yükleyin.
NGINX; yüksek eşzamanlı bağlantı kapasitesi, düşük bellek kullanımı ve esnek ters vekil (reverse proxy) yetenekleriyle tercih edilen bir web sunucusudur. Aşağıdaki adımlar CentOS 7 ile CentOS Stream 8/9 (RHEL tabanlı dağıtımlar) üzerinde kurulumu, servis yönetimini, güvenlik duvarı ayarını ve temel site ile yönlendirme yapılandırmalarını kapsar.
Önemli: CentOS Linux 7'nin desteği 30 Haziran 2024'te, CentOS Stream 8'in desteği 31 Mayıs 2024'te sona erdi. nginx.org'un resmî paket listesinde RHEL ve uyumlu dağıtımlar için yalnızca 8, 9 ve 10 sürümleri yer alıyor, CentOS 7 listede yok. Yeni kurulumlarda desteklenen bir sürümü (CentOS Stream 9'un desteğinin 2027'de bitmesi bekleniyor) ya da AlmaLinux, Rocky Linux gibi RHEL 8/9 uyumlu bir dağıtımı tercih etmeniz daha güvenli olur.
Ön koşullar
- Root veya
sudoyetkisi. - Alan adıyla HTTPS kullanacaksanız
A/AAAAkaydının sunucu IP adresine yönlenmiş olması. firewalldkullanıyorsanız HTTP/HTTPS için kuralların açılması.
Bu rehber HTTPS sertifikası kurulumunu kapsamaz.
1. Sistemi güncelleyin
# CentOS 7 sudo yum -y update # CentOS Stream 8/9 sudo dnf -y upgrade
2. Resmî NGINX deposunu ekleyin (önerilir)
Dağıtım depolarındaki sürümler eski olabilir. Güncel ve kararlı paketler için NGINX'in resmî deposunu ekleyin. /etc/yum.repos.d/nginx.repo dosyasını oluşturup şu içeriği kaydedin:
[nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Bu tek dosya CentOS Stream 8/9 ve diğer RHEL uyumlu dağıtımlar için de geçerlidir. $releasever ve $basearch değerlerini yum ya da dnf kendisi doldurur. Kurulum sırasında GPG anahtarını onaylamanız istenirse, parmak izinin nginx.org'da yayımlanan değerle eşleştiğini doğrulayın.
Alternatif olarak EPEL üzerinden de kurabilirsiniz (sürüm eski olabilir):
sudo yum -y install epel-release && sudo yum -y install nginx
3. NGINX'i kurun
# CentOS 7 sudo yum -y install nginx # CentOS Stream 8/9 sudo dnf -y install nginx
4. Servisi başlatın ve durumu kontrol edin
sudo systemctl enable --now nginx systemctl status nginx journalctl -u nginx -n 100 --no-pager
5. Güvenlik duvarını (firewalld) açın
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Bu kurallar 80 ve 443 portlarını açar.
6. Yapılandırma dosyaları
Varsayılan ana dosya /etc/nginx/nginx.conf'tur ve genellikle /etc/nginx/conf.d/*.conf dosyalarını içeri alır. Değişiklikten sonra yapılandırmayı doğrulayıp servisi yeniden yükleyin:
sudo nginx -t sudo systemctl reload nginx
nginx -t hata verirse servisi yeniden yüklemeyin, önce hatayı düzeltin.
7. Basit bir site yayına alma
Örnek bir alan adıyla statik bir site yayına alın. Önce dizini ve örnek index dosyasını oluşturun:
sudo mkdir -p /var/www/example echo "<h1>Merhaba NGINX</h1>" | sudo tee /var/www/example/index.html
Sonra /etc/nginx/conf.d/example.conf dosyasına şu sunucu bloğunu yazın:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example;
index index.html;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Basit sıkıştırma
gzip on;
gzip_types text/plain text/css application/javascript application/json;
}
Son olarak yapılandırmayı doğrulayıp yeniden yükleyin:
sudo nginx -t sudo systemctl reload nginx
8. Ters vekil (reverse proxy) örneği
Uygulamanız 127.0.0.1:3000 üzerinde çalışıyorsa /etc/nginx/conf.d/app.conf dosyasına şunu yazın:
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;
}
}
Yapılandırmayı yine nginx -t ile doğrulayıp yeniden yükleyin. SELinux açıksa bir sonraki adımdaki httpd_can_network_connect ayarı da gerekir.
9. SELinux notları (RHEL/CentOS)
Statik içerik için dizin bağlamını ayarlayın:
sudo chcon -R -t httpd_sys_content_t /var/www/example
Uygulamaya proxy yapacaksanız ağ bağlantısına izin verin:
sudo setsebool -P httpd_can_network_connect 1
Mevcut bağlamları geri yüklemek gerekirse:
sudo restorecon -RFv /var/www
chcon ile verilen bağlam, dosya sistemi yeniden etiketlenirse kaybolur. /var/www altında oluşturduğunuz dizinler bağlamı genellikle zaten devralır. Başka bir dizin kullanıyorsanız kalıcı kural için semanage fcontext kullanın.
10. Loglar ve log döndürme
- Erişim günlüğü:
/var/log/nginx/access.log - Hata günlüğü:
/var/log/nginx/error.log - Sanal host günlükleri: özel günlükler için
access_logveerror_logyollarını tanımlayın (örneğinexample.confiçinde gösterildiği gibi). - Döndürme:
logrotatevarsayılan kuralları NGINX paketiyle birlikte gelir, günlükler otomatik döndürülür.
11. Güncelleme ve kaldırma
# Güncelleme (CentOS 7) sudo yum -y update nginx # Güncelleme (CentOS Stream 8/9) sudo dnf -y upgrade nginx
# Kaldırma sudo systemctl disable --now nginx # CentOS 7 sudo yum -y remove nginx # CentOS Stream 8/9 sudo dnf -y remove nginx
Paketi kaldırmak yapılandırma ve web dizinlerini genellikle silmez. /etc/nginx, /var/www ve /var/log/nginx dizinlerini isterseniz elle temizleyebilirsiniz. Silmeden önce yedek alın.