Windows Server IIS (Internet Information Services) Neden Optimizasyon İster?
Windows Server (2025, 2022, 2019) üzerinde çalışan IIS 10 Web Sunucusu, varsayılan kurulum ayarlarıyla (Default Settings) standart web sitelerini sorunsuz çalıştırır. Ancak yüksek trafik alan kurumsal web uygulamalarında, REST API'lerde veya ASP.NET / PHP projelerinde varsayılan ayarlar yetersiz kalır.
Yanlış yapılandırılmış bir IIS sunucusu yüksek CPU kullanımı, uygulama havuzu (App Pool) çökmeleri, 503 Service Unavailable hataları ve güvenlik açıkları üretir. Bu rehberde IIS sunucunuzu maksimum hız ve yüksek güvenlik seviyesine getirecek teknik adımları uygulayacağız.
1. Application Pool (Uygulama Havuzu) İnce Ayarları
IIS üzerindeki her web sitesi bir Uygulama Havuzunda çalışır. Varsayılan kuyruk uzunluğu ve zaman aşımı değerleri yüksek yük altında yanıt vermeyi durdurur:
- 1IIS Manager uygulamasını açın ve sol taraftan Application Pools sekmesine tıklayın.
- 2Sitenizin bağlı olduğu App Pool üzerine sağ tıklayıp Advanced Settings (Gelişmiş Ayarlar) penceresini açın.
- 3Şu kritik değerleri değiştirin:
- Queue Length (Kuyruk Uzunluğu): Varsayılan
1000değerini4096olarak değiştirin (Ani trafik artışlarında 503 hatasını önler). - Idle Time-out (Minutes): Varsayılan
20dakikayı0yapın (Web sitenizin boşta kaldığında bellekten boşaltılıp ilk girişte yavaş açılmasını engeller). - Start Mode:
AlwaysRunningolarak ayarlayın.
- Queue Length (Kuyruk Uzunluğu): Varsayılan
2. Statik ve Dinamik Gzip Sıkıştırmayı (Compression) Aktifleştirme
Sunucudan istemciye gönderilen HTML, CSS, JS ve JSON yanıtlarını sıkıştırarak bant genişliği kullanımını %70 azaltabilirsiniz. PowerShell'i yönetici olarak açın ve çalıştırın:
Import-Module WebAdministration
# Statik ve Dinamik Sıkıştırmayı Aç
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.webServer/urlCompression' -name 'doStaticCompression' -value 'True'
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.webServer/urlCompression' -name 'doDynamicCompression' -value 'True'
Write-Host "IIS Gzip sıkıştırması aktifleştirildi!" -ForegroundColor Green3. Güvenlik Sıkılaştırma: TLS 1.2/1.3 Zorunluluğu ve Zayıf Protokollerin Kapatılması
Eski TLS 1.0, TLS 1.1 ve SSL 3.0 protokolleri güvenlik ihlallerine yol açar. PowerShell ile eski güvensiz şifreleme protokollerini kapatın:
# TLS 1.0 ve TLS 1.1 Devre Dışı Bırak
$protocols = @('TLS 1.0', 'TLS 1.1')
foreach ($protocol in $protocols) {
$keyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$protocol\Server"
if (-not (Test-Path $keyPath)) { New-Item -Path $keyPath -Force | Out-Null }
Set-ItemProperty -Path $keyPath -Name 'Enabled' -Value 0 -Type DWord
Set-ItemProperty -Path $keyPath -Name 'DisabledByDefault' -Value 1 -Type DWord
}
Write-Host "Eski TLS protokolleri kapatıldı!" -ForegroundColor Green4. HTTP Güvenlik Başlıkları (Security Headers) Ekleme
Sitenizi XSS, Clickjacking ve MIME koklama saldırılarına karşı korumak için web.config dosyanıza şu başlıkları ekleyin:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="X-Content-Type-Options" value="nosniff" />
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
</customHeaders>
</httpProtocol>
</system.webServer>