1. Nginx Web Sunucusu Nedir?

Nginx, yüksek performanslı, ölçeklenebilir ve açık kaynaklı bir web sunucusudur. HTTP ve ters proxy hizmetleri sağlayan Nginx, statik içerik sunma, yük dengeleme ve güvenlik duvarı işlevleriyle yaygın olarak kullanılmaktadır. Düşük bellek tüketimi ve yüksek eşzamanlı bağlantı desteği ile büyük ölçekli sistemler için idealdir.

2. Nginx Log Kayıtları

Nginx, sunucuya gelen ve sunucudan çıkan tüm HTTP/S isteklerini ve sunucu durumunu log dosyalarında saklar. Bu log kayıtları, performans analizi, hata ayıklama ve güvenlik izleme için kullanılır.

2.1. Nginx Log Türleri

Nginx tarafından üretilen başlıca log türleri şunlardır:

a) Access Log (Erişim Günlüğü)

Bu log, istemcilerin web sunucusuna yaptığı tüm HTTP isteklerini kaydeder. Erişim logları, hangi sayfalara ne zaman erişildiğini, hangi IP adreslerinden istek geldiğini ve hangi tarayıcıların kullanıldığını analiz etmek için kullanılır.

Örnek Access Log Kaydı:

192.168.1.1 - - [21/Mar/2025:14:55:36 +0000] "GET /index.html HTTP/1.1" 200 512 "https://google.com" "Mozilla/5.0 (Windows NT 10.0; Win64)"

Açıklama:

b) Error Log (Hata Günlüğü)

Sunucuda meydana gelen hataları kaydeder. Hata logları, sistemin düzgün çalışıp çalışmadığını ve olası hata nedenlerini analiz etmek için kullanılır.

Örnek Error Log Kaydı:

2025/03/21 15:22:10 [error] 12345#0: *56789 open() "/var/www/html/missing.html" failed (2: No such file or directory), client: 192.168.1.10, server: example.com, request: "GET /missing.html HTTP/1.1", host: "example.com"

Açıklama:

c) SSL Logları

HTTPS üzerinden yapılan bağlantıların detaylarını kaydeder. Şifreleme algoritmaları ve bağlantı protokolleri hakkında bilgi sağlar.

Örnek SSL Log Kaydı:

2025/03/21 14:55:36 [info] 5678#0: *123 SSL: TLSv1.3, cipher AES256-GCM-SHA384, client: 192.168.1.5, server: example.com

d) Yetkilendirme ve Güvenlik Logları

Web sunucusuna yapılan yetkilendirme girişimlerini kaydeder. Özellikle güvenlik ihlalleri ve yetkisiz erişim girişimleri için önemlidir.

2025/03/21 14:30:10 [warn] 9876#0: *9999 failed login attempt for user admin from 192.168.1.15

3. Nginx Log Yapılandırması

Nginx log formatı log_format ve access_log direktifleri ile yapılandırılabilir.

3.1. Varsayılan Nginx Log Formatları

Varsayılan Access Log Formatı:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;

Özel Log Formatı Oluşturma:

log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/custom.log custom;

4. Nginx Log Analizi

4.1. Komut Satırı ile Log Analizi

En Çok Ziyaret Edilen Sayfaları Görüntüleme:

awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

En Çok İstek Gönderen IP’ler:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

404 Hatalarını Analiz Etme:

grep " 404 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr

4.2. Log Analiz Araçları

GoAccess:

sudo apt install goaccess
goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html

ELK Stack (Elasticsearch, Logstash, Kibana):

sudo apt install elasticsearch logstash kibana

5. Nginx Logları ile Güvenlik İzleme

DDoS Saldırılarını Tespit Etme:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20

Brute Force Saldırılarını Görüntüleme:

grep "POST /wp-login.php" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10

Sonuç

Nginx web sunucusu logları, performans ve güvenlik açısından kritik bir kaynaktır. Doğru analiz edildiğinde, olası tehditleri tespit etmek, trafik akışını incelemek ve sistem sorunlarını belirlemek için kullanılabilir. Log yönetimi ve analizi, sistem güvenliği ve sağlıklı çalışması için düzenli olarak yapılmalıdır.