CentOS sunucuda NGINX nasıl kurulur?

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. Bu rehber, CentOS 7 ile CentOS Stream 8/9 (RHEL-tabanlı dağıtımlar) üzerinde kurulum, servis yönetimi, güvenlik duvarı ve temel site/yönlendirme yapılandırmalarını kapsar.

Ön Koşullar

  • Root veya sudo yetkisi
  • (Alan adıyla HTTPS kullanılacaksa) A/AAAA kaydı sunucu IP’sine yönlenmiş olmalı
  • firewalld kullanıyorsanız HTTP/HTTPS için kurallar açılmalı

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. Aşağıdaki içeriği uygun dosyaya kaydedin:

# CentOS 7: /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# CentOS Stream 8: /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/rhel/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# CentOS Stream 9: /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/rhel/9/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Alternatif olarak EPEL üzerinden de kurulabilir: sudo yum -y install epel-release && sudo yum -y install nginx (sürüm eski olabilir).

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ı (firewalld)

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

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

7) Basit bir site yayına alma

Örnek alan adıyla statik bir site yayınlayalım.

# Dizin ve örnek index
sudo mkdir -p /var/www/example
echo "<h1>Merhaba NGINX</h1>" | sudo tee /var/www/example/index.html

# Sunucu bloğu: /etc/nginx/conf.d/example.conf
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;
}
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
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;
    }
}

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

10) Loglar ve döngüsel kayıt

  • Erişim: /var/log/nginx/access.log, Hata: /var/log/nginx/error.log
  • Özel sanal host logları için access_log/error_log yollarını tanımlayın (ör. example.conf içinde gösterildiği gibi).
  • Logrotate varsayılan kuralları NGINX’le birlikte gelir; günlükler otomatik döndürülür.

11) Güncelleme ve kaldırma

# CentOS 7
sudo yum -y update nginx

# 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
# Yapılandırma ve web dizinlerini manuel temizlemek isteyebilirsiniz:
# /etc/nginx, /var/www, /var/log/nginx

Önerilen Anahtar Kelimeler

centos nginx kurulum, centos 7 nginx repo, centos stream 8 nginx, centos stream 9 nginx, nginx reverse proxy, nginx selinux httpd_can_network_connect, firewalld http https açma, nginx sanal host conf.d

Bu cevap yeterince yardımcı oldu mu? 0 Bu dökümanı faydalı bulan kullanıcılar: (0 Oy)