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
sudoyetkisi - (Alan adıyla HTTPS kullanılacaksa) A/AAAA kaydı sunucu IP’sine yönlenmiş olmalı
firewalldkullanı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_logyolları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