# Apache HTTP Sunucusu 2.4'te Yeni olan Özellikler

Bu belgede Apache HTTP Sunucusunun 2.2 ve 2.4 sürümleri arasındaki başlıca farklara değinilmiştir. 2.0 sürümüne göre yeni özellikler için Apache 2.2’de Yeni olan Özellikler belgesine bakınız.

# Çekirdekteki Gelişmeler

Çalışma anında yüklenebilen MPM'ler
  Çok sayıda MPM artık yüklenebilir modül olarak derlenebilmektedir. Kullanılacak MPM'in seçimi çalışma anında LoadModule yönergesi üzerinden yapılabilmektedir.
Event MPM
  Event MPM artık deneysel değil, ancak tam olarak desteklenmiyor.
Eşzamansıza destek
  MPM'leri ve platformları desteklemek için eşzamansız okuma/yazmaya destek iyileştirildi.
Modul bazında ve dizin bazına LogLevel yapılandırması
  LogLevel
  artık her modül ve her dizin için yapılandırılabilmektedir. `debug` log seviyesinin üstüne `trace1`'den `trace8`'e kadar yeni log seviyeleri eklendi.
İstek bazında yapılandırma bölümleri
  If
  , ElseIf, ve Else bölümleri artık HTTP isteklerine dayalı olarak yapılandırılabilmektedir.
Genel amaçlı ifade çözümleyici
  Yeni ifade çözümleyici SetEnvIfExpr, RewriteCond, Header, If ve benzeri yönergelerde ortak bir sözdizimi kullanarak karmaşık durumlar belirtmeyi mümkün kılmaktadır.
Milisaniye cinsinden KeepAliveTimeout
  KeepAliveTimeout
  milisaniye cinsinden belirtmek artık mümkündür.
NameVirtualHost yönergesi
  Artık gerekmemekte ve kullanımı önerilmemektedir.
Yapılandırma geçersizleştirme
  Yeni AllowOverrideList yönergesi `.htaccess` dosyalarında kullanılabilen yönergelerde daha ince ayarlara izin vermektedir.
Yapılandırma dosyası değişkenleri
  Yapılandırmada değişkenler Define yönergesi ile tanımlanabilmekte, böylece aynı değer yapılandırmada bir çok yerde kullanılıyorsa daha temiz bir görünüm elde edilebilmektedir.
Azaltılmış bellek kullanımı
  Bir çok yeni özelliğe karşın, 2.4.x'te 2.2.x'e nazaran bellek kullanımı azaltılmıştır.

# Yeni Modüller

mod_proxy_fcgi
  mod_proxy
  için FastCGI Protokolü sağlayıcısı
mod_proxy_scgi
  mod_proxy
  için SCGI Protokolü sağlayıcısı
mod_proxy_express
  mod_proxy
  için devingen olarak yapılandırılmış tam tersinir vekiller sağlar.
mod_remoteip
  İstek başlıklarında bir yük dengeleyici veya bir vekil tarafından sunulan IP adres listeli bir istek için görünen istemci IP adresi ve konak adını değiştirir.
mod_heartmonitor, mod_lbmethod_heartbeat
  mod_proxy_balancer
  modülünün arka sunuculardaki etkin bağlantı sayısı üzerindeki yük dengeleme kararlarına dayalı işlem yapmasını sağlar.
mod_proxy_html
  Başta bir üçüncü parti modüldü. Arka plandaki sağlayıcının vekil istemcileri için geçersiz URL'ler ürettiği tersinir vekil durumlarında HTML bağlarının düzeltilmesini sağlar.
mod_sed
  mod_substitute
  modülünün geliştirilmiş hali olup yanıt gövdesinin sed'in tüm gücü ile yeniden düzenlenebilmesini sağlar.
mod_auth_form
  Formlara dayalı kimlik kanıtlamayı etkinleştirir.
mod_session
  Çerezleri ve veritabanı deposunu kullanarak istemciler için oturum durumunun saklanmasını etkinleştirir.
mod_allowmethods
  Kimlik Doğrulama ve Yetkilendirme ile etkileşmeyen belli HTTP yöntemlerine sınır koymak için yeni bir modül.
mod_lua
  Küçük iş mantıksal işlevleri ve yapılandırması için httpd içine Lua dilini gömer.
mod_log_debug
  İstek işlemlerinin farklı aşamalarına özelleştirilebilir hata ayıklama günlüğü eklenmesini sağlar.
mod_buffer
  Girdi ve çıktı süzgeç yığıtlarına tampon bellek sağlar.
mod_data
  Yanıt gövdesini bir RFC2397 veri URL'sine dönüştürür.
mod_ratelimit
  İstemciler için band genişliği oranında sınırlama sağlar.
mod_request
  Kullanılabilir HTTP istek gövdelerini yapmak ve elde etmek için Süzgeçleri sağlar.
mod_reflector
  Çıktı süzgeci yığıtı üzerinden bir yanıt olarak bir istek gövdesinin yansısını sağlar.
mod_slotmem_shm
  Yuva temelli bir paylaşımlı bellek sağlayıcı sağlar (scoreboard olarak da bilinir).
mod_xml2enc
  Başta bir üçüncü parti modüldü. libxml2 temelli süzgeç modüllerinde i18n'i destekler.
mod_macro (2.4.5'den itibaren kullanılabilir)
  Yapılandırma dosyalarında makro kullanımını sağlar.
mod_proxy_wstunnel (2.4.5'den itibaren kullanılabilir)
  Web-socket tünelleri için destek.
mod_authnz_fcgi (2.4.10'dan itibaren kullanılabilir)
  Kimlik kanıtlama ve/veya istemcileri yetkilendirmek için FastCGI yetkilendirme uygulamalarını etkinleştirir.
mod_http2 (2.4.17'den itibaren kullanılabilir)
  HTTP/2 aktarım katmanı desteği.
mod_proxy_hcheck (2.4.21'den itibaren kullanılabilir)
  Uzak vekil artuç sunucuları için bağımsız özdevinimli sağlık sınamalarını destekler.

# Modüllerdeki Gelişmeler

mod_ssl
  mod_ssl
  bir istemci sertifikasının doğrulama durumunu sınamak için bir OCSP sunucusunu kullanmak üzere yapılandırılabilir. Öntanımlı yanıtlayıcı, istemci sertifikasının kendisinde tasarlanmış yanıtlayıcının tercih edilip edilmeyeceği kararına bağlı olarak yapılandırılabilir.
  mod_ssl
  , ayrıca, sunucunun istemciyle anlaşma sırasında kendi sertifikasının OCSP doğrulamasını umursamazca sağlayıp aktardığı durumda OCSP zımbalamasını da destekler.
  mod_ssl
  , sunucular arasında SSL Oturumu verisini memcached üzerinden paylaşmak üzere yapılandırılabilir.
  RSA ve DSA'ya ek olarak EC anahtarları da artık desteklenmektedir.
  TLS-SRP için destek (2.4.4 itibariyle kullanılabilir).
mod_proxy
  ProxyPass
  yönergesi bir Location veya LocationMatch bloku içinde en verimli şekilde yapılandırılabilir ve büyük sayıların varlığı durumunda geleneksel iki değiştirgeli sözdiziminin de üzerinde belirgin bir başarım artışı sağlar.
  Vekil istekleri için kullanılan kaynak adresi artık yapılandırılabilmektedir.
  Artalanda Unix alan soketleri için destek (2.4.7 itibariyle kullanılabilir).
mod_proxy_balancer
  Dengeleme yöneticisi üzerinden BalancerMembers için daha fazla çalışma anı yapılandırması
  Çalışma anında dengeleme yöneticisi üzerinden başka BalancerMembers eklenebilir.
  Çalışma anı yapılandırmasına yönelik dengeleyici değiştirgeleri
  BalancerMembers için 'Drain' değeri belirtilebilir; böylece sadece mevcut yapışık oturumlara yanıt verirler ve bunların güzellikle hattan alınması mümkün olur.
  Balancer ayarları sunucu yeniden başlatılssa bile kalıcı olabilir.
mod_cache
  mod_cache
  CACHE süzgeci, arabellekleme üzerinde daha hassas denetim sağlamak için istenirse süzgeç zincirinin belli bir noktasına yerleştirilebilmektedir.
  mod_cache
  artık HEAD isteklerini arabellekleyebiliyor.
  Mümkün olduğunda, mod_cache yönergeleri sunucu bazında değil, dizin bazında belirtilebiliyor.
  Arabellekli URL'lerin temel URL'si özelleştirilebiliyor; böylece arabelleğin bir bölümü aynı uç URL önekini paylaşabiliyor.
  mod_cache
  , ardalanda bir sağlayıcının olmadığı durumda (5xx hatası), arabelleklenmiş bayat içeriği sunabiliyor.
  mod_cache
  artık bir X-Cache başlığına bir HIT/MISS/REVALIDATE yerleştirebiliyor.
mod_include
  Bir hata durumunda öntanımlı hata dizgisi yerine bir hata sayfası sunmayı sağlayan 'onerror' özniteliği için 'include' elemanı içinde destek.
mod_cgi, mod_include, mod_isapi, ...
  Başlıkların ortam değişkenlerine dönüşümü, başlık zerki yoluyla bazı olası karşı-site-betik saldırılarının hafifletilmesinden önce daha hızlı ve doğru yapılmaktadır. Geçersiz karakterler (altçizgiler dahil) içeren başlıklar artık sessizce bırakılmaktadır.Apache'deki Ortam değişkenleri, böyle başlıkları gerektiren bozulmuş meşru istemcilerin çevresinden dolanabilen göstericilere sahiptir. (Bu durum, bu değişkenleri kullanan tüm modülleri etkiler.)
mod_authz_core Yetkilendirme Kuralları Taşıyıcıları
  Gelişkin yetkilendirme kuralları artık Require yönergesi ve RequireAll gibi ilgili taşıyıcı yönergeler kullanılarak belirtilebilmektedir.
mod_rewrite
  mod_rewrite
  bildik yeniden yazma senaryolarını basitleştirmek için RewriteRule yönergesine `[QSD]` (Query String Discard=sorgu dizgisini iptal) ve `[END]` seçeneklerini sağlamaktadır.
  RewriteCond
  içinde karmaşık mantıksal ifadeler kullanımını mümkün kılmaktadır.
  SQL sorgularının RewriteMap işlevleri olarak kullanılması sağlanmıştır.
mod_ldap, mod_authnz_ldap
  mod_authnz_ldap
  kümelenmiş gruplara destek sağlar.
  mod_ldap
  zaman aşımlarını işleme sokabilmek için LDAPConnectionPoolTTL, LDAPTimeout ve birtakım başka geliştirmeler sahiptir. Özellikle, bir LDAP sunucusunun boşta kalmış bağlantılarını bıraktıran bir durumsal güvenlik duvarı varlığında gerekli ayarlamaları yapmak için kullanışlıdır.
  mod_ldap
  , artık, LDAP araç kiti kullanarak sağlanan hata ayıklama bilgisini günlüklemek için LDAPLibraryDebug yönergesini içermektedir.
mod_info
  mod_info
  önceden çözümlenmiş yapılandırmayı artık sunucunun başlatılması sırasında standart çıktıya dökümleyebilmektedir.
mod_auth_basic
  Temel kimlik kanıtlamayı taklit eden yeni temel mekanizma (2.4.5 itibariyle kullanılabilmektedir).

# Programlardaki Gelişmeler

fcgistarter
  Yeni FastCGI artalan sunucusu başlatma aracı
htcacheclean
  Arabellekli URL'ler, istenirse metadata'yı da dahil ederek listelenebilmektedir.
  Bazı URL'ler arabellekten tek tek silinebilmektedir.
  Dosya boyutları belirtilen blok boyutuna yukarı doğru yuvarlanabilmekte, böylece dosya boyutu sınırları diskteki gerçek boyutlarla daha iyi eşlenebilmektedir.
  Arabellek boyutu artık, diskteki dosyaların boyutuna göre bir sınıra ek olarak veya bunun yerine dosya düğümü sayısı ile sınırlanabilmektedir.
rotatelogs
  Artık geçerli günlük dosyasına bir bağ oluşturulabiliyor.
  Artık özel bir döndürme sonrası betiği çalıştırılabiliyor.
htpasswd, htdbm
  Bcrypt algoritması için destek (2.4.4 itibariyle kullanılabilmektedir).

# Belgelendirme

mod_rewrite
  mod_rewrite
  belgeleri, yeniden düzenlenerek, genel kullanıma ve örneklere odaklı olarak ve diğer çözümlerin hangi durumlarda daha uygun olduğu da gösterilerek hemen hemen tamamen yeniden yazıldı. Yeniden Yazma Kılavuzu artık bir sayfa olmaktan çıkıp, çok daha ayrıntılı ve daha iyi düzenlenmiş bir bölüm haline geldi.
mod_ssl
  mod_ssl
  belgeleri, evvelki teknik ayrıntılara ek olarak başlarken seviyesinde daha fazla örnekle büyük oranda genişletildi.
Önbellek Kullanım Kılavuzu
  Önbellek Kullanım Kılavuzu mod_cache tarafından sağlanan RFC2616 HTTP/1.1 önbellekleme özellikleri arasıda daha iyi ayrım yapılabilmesi için ve socache arayüzü ile sağlanan soysal anahtar/değer önbelleklemesi yanında mod_file_cache gibi mekanizmalarla sağlanan özelleştirilebilir arabelleklemeyi de kapsamak üzere yeniden yazıldı.

# Modül Geliştirici Değişiklikleri

Yapılandırma Denetleme Kancası Eklendi
  Yeni bir kanca, `check_config` kancası, `pre_config` ve `open_logs` kancaları arasında çalışmak üzere eklendi. Ayrıca, httpd'ye `-t` seçeneği verildiğinde `test_config` kancasından önce çalışır. `check_config` kancası, modüllerin karşılıklı bağımlı yapılandırma yönergesi değerlerini yeniden yoklamasını ve iletiler konsola hala günlüklenebiliyorken bunların ayarlanabilmesini sağlar. Temel `open_logs` kanca işlevi konsol çıktısını hata günlüğüne yönlendirmeden önce hatalı yapılandırma sorunlarına karşı kullanıcı uyarılabilir.
İfade Çözümleyici Eklendi
  Artık genel amaçlı bir ifade çözümleyicimiz var. API ap_expr.h içinde incelenebilir. Evvelce mod_ssl içinde gerçeklenmiş olan ifade çözümleyiciden esinlenildi.
Yetkilendirme Kuralları Taşıyıcıları
  Yetkilendirme modülleri, RequireAll gibi gelişmiş yetkilendirme kuralı taşıyıcılarını desteklemek için ap_register_auth_provider() üzerinden artık bir sağlayıcı olarak çalıştırılabilmektedir.
Küçük Nesne Arabellekleme Arayüzü
  ap_socache.h
  , evvelki mod_ssl oturum arabelleği gerçeklenimine dayalı olarak küçük veri nesnelerini arabelleklemek için sağlayıcı temelli bir arayüz ortaya koyar. Paylaşımlı bellek çevrimsel tamponu kullanan sağlayıcılar, disk bazlı dbm dosyaları ve memcache ile dağıtılan arabellekler şu an desteklenmektedir.
Arabellek Durum Kancası Eklendi
  mod_cache
  modülü artık, arabellekleme kararı bilinir olduğunda çağrılan yeni bir `cache_status` kancası içeriyor. Öntanımlı gerçeklenim, yanıta istemlik bir `X-Cache` ve `X-Cache-Detail` ekleyebilmektedir.

Geliştirici belgeleri API değişikliklerinin ayrıntılı bir listesini içermektedir.