Web Sunucusu Nedir?
Web sunucusu, istemcilerden HTTP/HTTPS isteklerini kabul eden ve HTML sayfaları, görseller, stil sayfaları, betikler ve API yanıtları dâhil web içeriği sunan yazılımdır. Bu yazılımı çalıştıran donanım da aynı kapsamda değerlendirilir.Web Sunucuları Nasıl Çalışır?
HTTP Request/Response Cycle:
Client (Browser) Web Server
│ │
│──── HTTP Request ──────────►│
│ GET /index.html │
│ Host: example.com │
│ │
│ Process Request
│ ├── Parse URL
│ ├── Check permissions
│ ├── Locate resource
│ └── Prepare response
│ │
│◄─── HTTP Response ──────────│
│ 200 OK │
│ Content-Type: text/html │
│ <html>...</html> │
│ │
Popüler Web Sunucusu Yazılımları
| Sunucu | Pazar payı | En uygun kullanım |
|---|---|---|
| nginx | ~34% | Yüksek eşzamanlılık, reverse proxy |
| Apache | ~31% | Esneklik, .htaccess |
| Cloudflare | ~21% | CDN, edge computing |
| LiteSpeed | ~12% | WordPress barındırma |
| IIS | ~6% | Windows/.NET ortamları |
Web Sunucusu İşlevleri
| İşlev | Açıklama |
|---|---|
| Statik dosya sunumu | HTML, CSS, JS ve görseller |
| TLS/SSL sonlandırma | HTTPS şifrelemesi |
| Reverse proxy | Arka uç sunucularına iletme |
| Yük dengeleme | Trafiği dağıtma |
| Önbelleğe alma | Arka uç yükünü azaltma |
| Sıkıştırma | Gzip/Brotli kodlaması |
| Erişim denetimi | Kimlik doğrulama ve IP filtreleme |
| Günlükleme | İstek ve hata günlükleri |
Sunucu Yapılandırması Örnekleri
# nginx - Virtual host configuration
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/example;
index index.html;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
location / {
try_files $uri $uri/ =404;
}
location /api {
proxy_pass http://localhost:3000;
}
}
# Apache - .htaccess example
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Enable compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
Web Sunucusu Mimarisi
Modern Web Stack:
Internet
│
▼
┌─────────────┐
│ CDN/WAF │
└─────────────┘
│
▼
┌─────────────┐
│ Load Balancer│
└─────────────┘
│ │
┌─────┘ └─────┐
▼ ▼
┌───────────┐ ┌───────────┐
│ Web Server│ │ Web Server│
│ (nginx) │ │ (nginx) │
└───────────┘ └───────────┘
│ │
└────────┬────────┘
▼
┌─────────────┐
│ App Server │
│ (Node/Python)│
└─────────────┘
│
▼
┌─────────────┐
│ Database │
└─────────────┘
Sunucu Tanımlama
| Tespit yöntemi | Ortaya çıkan bilgi |
|---|---|
| Sunucu başlığı | Yazılım adı ve sürümü |
| Yanıt başlıkları | Teknoloji yığını ipuçları |
| Hata sayfaları | Varsayılan sunucu şablonları |
| Zamanlama kalıpları | Sunucuya özgü davranış |
| Dosya uzantıları | Platform göstergeleri |
Güvenlik Değerlendirmeleri
1. Sürüm bilgisini gizleyin: Sunucu sürümünü başlıklardan kaldırın
2. Dizin listelemeyi devre dışı bırakın: Dosya enumerasyonunu önleyin
3. TLS’yi doğru yapılandırın: Modern protokoller ve güçlü şifreler kullanın
4. İstek boyutlarını sınırlayın: DoS saldırılarını önleyin
5. Güvenlik başlıkları belirleyin: CSP, HSTS ve X-Frame-Options kullanın
6. Düzenli güncelleyin: Güvenlik açıklarını hızla yamalayın
Performans Optimizasyonu
| Teknik | Faydası |
|---|---|
| Keep-alive | Bağlantıları yeniden kullanma |
| Gzip/Brotli | Daha küçük yanıtlar |
| Statik önbellekleme | Disk G/Ç’sini azaltma |
| Worker ayarı | Daha fazla eşzamanlı kullanıcı işleme |
| HTTP/2 | Çoklanmış istekler |
En İyi Uygulamalar
1. İhtiyaca göre seçin: Proxy için nginx, esneklik için Apache
2. Statik ve dinamik içeriği ayırın: Statik içerik için CDN, dinamik içerik için sunucu kullanın
3. Kaynakları izleyin: CPU, bellek ve bağlantıları takip edin
4. Önbellekleme uygulayın: Tarayıcı, proxy ve sunucu tarafı önbelleklerini kullanın
5. Günlüklemeyi yapılandırın: Analiz için yapılandırılmış günlükler tutun
6. Ölçeklemeyi planlayın: Yük dengeleme ve yatay ölçekleme hazırlayın
Web sunucuları, içeriği kullanıcılara güvenilir ve verimli biçimde sunarak web altyapısının temelini oluşturur.