Apache Konfigürasyon Dosyası (.conf) Nedir?
Apache Konfigürasyon Dosyası Nasıl Çalışır?
Apache HTTP Sunucusu, başlatıldığında veya yeniden yüklendiğinde, yapılandırma dosyalarını belirli bir öncelik sırasına göre okuyarak çalışır. Bu dosyalar, sunucunun global ayarlarını, sanal host tanımlarını ve belirli dizinler veya URL'ler için özel kuralları içerir. İşleyiş mekanizması şu adımları izler:
- Başlangıç: Apache başlatıldığında, ana yapılandırma dosyasını (genellikle
httpd.confveyaapache2.conf) okur. - Modül Yüklemesi: Yapılandırma dosyasında belirtilen modüller yüklenir. Bu modüller, sunucuya ek işlevsellik (örneğin, SSL/TLS desteği, sıkıştırma) kazandırır.
- Global Ayarlar: Sunucunun genel dinleme portları, kullanıcı/grup izinleri, günlük dosyalarının konumu gibi temel ayarlar uygulanır.
- Sanal Host İşlemesi:
VirtualHostdirektifleri ile tanımlanan sanal hostlar işlenir. Her sanal host bloğu, belirli bir alan adı veya IP adresi için geçerli olan kendi yapılandırma ayarlarını içerebilir. - Dizin ve Dosya Seviyesi Yapılandırması:
Directory,LocationveFilesdirektifleri kullanılarak belirli dizinler veya URL yolları için özel kurallar (erişim izinleri, yönlendirmeler, içerik türleri vb.) tanımlanır. - Runtime Değişiklikler: Yapılandırma dosyalarında yapılan değişiklikler, sunucuyu yeniden başlatmadan veya yeniden yüklemeden (graceful reload) etkinleşmeyebilir. Bu işlem, hizmet kesintisini en aza indirerek yapılandırmanın güncellenmesini sağlar.
Bu süreç, Apache'nin son derece esnek bir şekilde farklı web sitelerini aynı sunucu üzerinde barındırmasına ve her biri için özelleştirilmiş ayarlar sunmasına olanak tanır. Yapılandırma dosyaları, direktifler (komutlar) ve argümanlardan oluşur ve genellikle formatındadır. Direktifler, Apache'nin belirli bir işlevi yerine getirmesini söylerken, argümanlar bu işlevin nasıl gerçekleştirileceğini belirtir.
Apache Konfigürasyon Dosyası Yapısı
Apache yapılandırma dosyaları, modüler bir yapıya sahiptir ve farklı seviyelerde ayarlar içerebilir. Bu yapı, karmaşık sunucu ortamlarının yönetimini kolaylaştırır. Başlıca yapılandırma dosyaları ve içerikleri şunlardır:
- Ana Yapılandırma Dosyası (
httpd.confveyaapache2.conf): Bu dosya, sunucunun genel davranışını tanımlayan temel direktifleri içerir. Genellikle ilk okunan dosyadır ve diğer yapılandırma dosyalarını dahil etmek için kullanılır. - Sanal Host Yapılandırması: Her bir web sitesi veya alan adı için ayrı yapılandırma dosyaları oluşturulabilir. Bu dosyalar genellikle
sites-availablevesites-enabled(Debian/Ubuntu tabanlı sistemlerde) veyaconf.ddizinlerinde bulunur. Her sanal host bloğu, belirli bir alan adı içinServerName,DocumentRoot,ErrorLog,CustomLoggibi direktifleri içerir. - Modül Yapılandırması: Bazı modüller, kendi yapılandırma dosyalarına sahip olabilir. Bu dosyalar, modülün özel ayarlarını (örneğin,
mod_ssliçin sertifika yolları) içerir. - Dizin Seviyesi Yapılandırması (
.htaccessdosyaları): Sunucunun ana yapılandırma dosyası değiştirilmeden, belirli dizinler için özel yapılandırmalar yapmak amacıyla kullanılır.AllowOverridedirektifi ile etkinleştirilirler.
Yapılandırma dosyalarındaki temel öğeler şunlardır:
- Direktifler (Directives): Apache'nin gerçekleştireceği komutlardır. Örneğin,
Listen 80sunucunun 80 numaralı portu dinlemesini sağlar. - Konteynerler (Containers): Belirli koşullar altında geçerli olacak direktifleri gruplamak için kullanılır. En yaygın konteynerler şunlardır:
: Belirli bir IP adresi ve port için yapılandırma bloğu.: Belirli bir dosya sistemi dizini için yapılandırma bloğu.: Belirli bir URL yolu için yapılandırma bloğu.: Belirli dosya adları veya kalıpları için yapılandırma bloğu.
- Yorum Satırları:
#karakteri ile başlayan satırlar yorum olarak kabul edilir ve sunucu tarafından işlenmez.
Örnek Yapılandırma Parçası:
# Ana sunucu ayarları ServerRoot "/usr/local/apache2" Listen 80 User apache Group apache # Hata günlüklerinin konumu ErrorLog logs/error_log CustomLog logs/access_log combined # Sanal hostlar için dahil edilecek dosya Include conf/extra/httpd-vhosts.conf # mod_rewrite gibi modüllerin etkinleştirilmesi LoadModule rewrite_module modules/mod_rewrite.so
Bu yapı, Apache'nin ne kadar esnek ve özelleştirilebilir olduğunu göstermektedir. Farklı senaryolar için farklı yapılandırma dosyaları ve direktif kombinasyonları kullanılabilir.
Apache Konfigürasyon Dosyası Direktifleri
Apache yapılandırma dosyaları, sunucunun davranışını kontrol eden yüzlerce direktif içerir. Bu direktifler, sunucunun temel ayarlarından, güvenlik protokollerine, içerik yönetiminden, URL yönlendirmelerine kadar geniş bir yelpazede işlevsellik sağlar. En sık kullanılan ve kritik öneme sahip direktiflerden bazıları şunlardır:
ServerRoot: Apache'nin ana dizinini belirtir. Tüm yapılandırma dosyaları, loglar ve modüller bu dizin altında aranır.Listen: Sunucunun hangi IP adresleri ve portlar üzerinden istekleri dinleyeceğini belirler. Örneğin,Listen 80veyaListen 192.168.1.100:8080.UserveGroup: Apache işleminin hangi kullanıcı ve grup kimliğiyle çalışacağını belirler. Güvenlik açısından önemlidir.ServerName: Sunucunun ana alan adını belirtir. Özellikle birden fazla sanal host varsa önemlidir.DocumentRoot: Bir sanal host veya ana sunucu için web sitesi dosyalarının bulunduğu dizini belirtir.DirectoryIndex: Bir dizine istek yapıldığında (örneğin,http://example.com/klasor/), sunucunun otomatik olarak sunacağı index dosyalarını belirtir (örneğin,index.html index.php).AllowOverride: Belirli bir dizin için.htaccessdosyalarının kullanılıp kullanılamayacağını kontrol eder.All,None,FileInfogibi değerler alabilir.Require: Erişim kontrolü için kullanılır.Require all grantedherkesin erişimine izin verirken,Require ip 192.168.1.0/24belirli bir IP aralığına izin verir.RewriteEngine,RewriteRule,RewriteCond:mod_rewritemodülü ile birlikte URL yönlendirmeleri ve yeniden yazımları için kullanılır. Örneğin,http://example.com/eski-sayfaadresinihttp://example.com/yeni-sayfaadresine yönlendirmek için kullanılır.SSLEngine,SSLCertificateFile,SSLCertificateKeyFile: SSL/TLS sertifikalarını yapılandırmak ve HTTPS üzerinden güvenli bağlantıları etkinleştirmek için kullanılır.ExpiresActive,Header set Cache-Control: Tarayıcı önbellekleme (caching) ayarlarını yapılandırmak için kullanılır.
Bu direktifler, Apache'nin karmaşık web uygulamalarını barındırmasını, güvenlik politikalarını uygulamasını ve performansı optimize etmesini sağlar. Her direktifin belirli bir işlevi ve alabileceği argümanlar vardır. Doğru direktif kullanımı, web sunucusunun verimliliği ve güvenliği için kritik öneme sahiptir.
Sanal Host Yapılandırması
Sanal hostlar, tek bir fiziksel veya sanal sunucu üzerinde birden fazla web sitesini barındırmaya olanak tanır. Her sanal host, kendi alan adına (örneğin, site1.com ve site2.com) ve kendi yapılandırma ayarlarına sahip olabilir. Apache'de sanal host yapılandırması, genellikle ana yapılandırma dosyasında Include direktifi ile çağrılan ayrı dosyalarda yapılır.
Bir sanal host dosyasının temel yapısı şöyledir:
ServerAdmin webmaster@site1.com ServerName site1.com ServerAlias www.site1.com DocumentRoot /var/www/site1/public_html ErrorLog logs/site1-error.log CustomLog logs/site1-access.log combined # Belirli dizinler için ek ayarlar Options Indexes FollowSymLinks AllowOverride All Require all granted # SSL yapılandırması (HTTPS için) # SSLEngine on # SSLCertificateFile /etc/ssl/certs/site1.crt # SSLCertificateKeyFile /etc/ssl/private/site1.keyServerAdmin webmaster@site2.com ServerName site2.com DocumentRoot /var/www/site2/public_html ErrorLog logs/site2-error.log CustomLog logs/site2-access.log combined Options Indexes FollowSymLinks AllowOverride All Require all granted
Bu örnekte:
: Bu blok, sunucunun tüm IP adreslerinde (*) 80 numaralı port üzerinden gelen istekler için geçerlidir.ServerAdmin: Sitenin yöneticisinin e-posta adresini belirtir. Hata durumlarında bu adrese bildirim gönderilebilir.ServerNameveServerAlias: Sanal hostun hangi alan adları veya alt alan adları için aktif olacağını belirtir.DocumentRoot: Bu sanal hosta ait dosyaların bulunduğu ana dizini gösterir.ErrorLogveCustomLog: Bu sanal hosta özel hata ve erişim günlüklerinin nereye yazılacağını belirtir.bloğu: Belirtilen dizin için özel izinler, seçenekler ve.htaccesskullanımını tanımlar.
HTTPS desteği için, ayrı bir bloğu oluşturulur ve SSL ile ilgili direktifler (SSLEngine, SSLCertificateFile vb.) eklenir. Bu modüler yapı, her web sitesi için bağımsız yapılandırma ve yönetim imkanı sunar.
SSL/TLS Konfigürasyonu
SSL/TLS (Secure Sockets Layer/Transport Layer Security), web siteleri ile kullanıcılar arasındaki iletişimi şifreleyerek güvenli hale getirir. Apache sunucularında SSL/TLS yapılandırması, mod_ssl modülü aracılığıyla gerçekleştirilir.
SSL/TLS yapılandırması için temel adımlar şunlardır:
mod_sslModülünün Yüklenmesi: Apache'nin SSL/TLS desteği sunabilmesi için bu modülün yüklenmiş ve etkinleştirilmiş olması gerekir. Genellikle kurulum sırasında eklenir veya sonradan modül olarak yüklenebilir.- SSL Sertifikası Edinme: Güvenilir bir Sertifika Otoritesi'nden (CA) bir SSL sertifikası alınmalıdır. Bu sertifika, alan adınızı ve sunucunuzun kimliğini doğrular.
- Sanal Host Yapılandırması (HTTPS için): Genellikle ana yapılandırma dosyasında veya sanal host dosyalarında, 443 numaralı portu dinleyen yeni bir
bloğu oluşturulur. - Gerekli Direktiflerin Eklenmesi:
SSLEngine on: SSL motorunu etkinleştirir.SSLCertificateFile /path/to/your_domain.crt: Sunulan SSL sertifikasının dosya yolunu belirtir.SSLCertificateKeyFile /path/to/your_private.key: SSL sertifikasının özel anahtarının dosya yolunu belirtir.SSLCertificateChainFile /path/to/intermediate.crt(isteğe bağlı): Ara sertifikaları belirtir.
- HTTP'den HTTPS'ye Yönlendirme: Güvenliği artırmak ve tüm trafiğin şifreli olmasını sağlamak için, HTTP isteklerini otomatik olarak HTTPS'ye yönlendiren kurallar eklenmelidir. Bu genellikle
mod_rewritekullanılarak yapılır.
Örnek SSL/TLS Yapılandırması:
ServerAdmin webmaster@example.com ServerName example.com DocumentRoot /var/www/example.com/public_html SSLEngine on SSLCertificateFile /etc/ssl/certs/example.com.crt SSLCertificateKeyFile /etc/ssl/private/example.com.key # SSLCertificateChainFile /etc/ssl/certs/intermediate.pem # Gerekirse ErrorLog logs/example.com-ssl-error.log CustomLog logs/example.com-ssl-access.log combined # TLS Protokol Sürümleri ve Güvenli Şifreleme Süitleri SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder on SSLSessionTickets off # HTTP Strict Transport Security (HSTS) Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" # HTTP'den HTTPS'ye YönlendirmeServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/
Bu yapılandırma, hem güvenli bağlantıyı sağlar hem de güncel güvenlik standartlarına uygunluğu artırır. Doğru SSL/TLS yapılandırması, kullanıcıların verilerini korur ve site güvenilirliğini artırır.
Cache ve Gzip Optimizasyonu
Web sunucularında performans optimizasyonu için önbellekleme (caching) ve sıkıştırma (gzip) kritik öneme sahiptir. Apache, bu optimizasyonları sağlamak için çeşitli modüller ve direktifler sunar.
Önbellekleme (Caching):
- Tarayıcı Önbellekleme: Kullanıcının tarayıcısının, web sitesine ait statik dosyaları (CSS, JavaScript, resimler vb.) yerel kopyasını saklamasını sağlar. Bu, tekrar ziyaretlerde sayfanın daha hızlı yüklenmesine yardımcı olur.
mod_expiresvemod_headersmodülleri bu amaçla kullanılır.ExpiresActive On: Önbellekleme direktiflerini etkinleştirir.ExpiresByType text/css "access plus 1 year": CSS dosyaları için 1 yıl geçerli bir önbellekleme süresi belirler.Header set Cache-Control "max-age=31536000": Tarayıcıya gönderilecek cache-control başlığını ayarlar.
- Sunucu Tarafı Önbellekleme: Apache'nin kendisinin dinamik olarak oluşturulan sayfaların veya sık kullanılan dosyaların kopyalarını bellekte veya diskte saklamasını sağlar.
mod_cachevemod_cache_diskgibi modüller kullanılır. Bu, özellikle yoğun trafik alan ve dinamik içerik üreten siteler için performansı önemli ölçüde artırabilir.
Gzip Sıkıştırma:
mod_deflatemodülü, sunulan metin tabanlı dosyaları (HTML, CSS, JavaScript, XML, JSON vb.) istemciye göndermeden önce sıkıştırır. Tarayıcı, bu sıkıştırılmış veriyi alıp açar. Bu, dosya boyutlarını %70-80 oranında azaltabilir ve sayfa yükleme sürelerini iyileştirebilir.- Yapılandırma Örneği:
AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/font-woff AddOutputFilterByType DEFLATE application/font-woff2 AddOutputFilterByType DEFLATE image/svg+xml
Bu optimizasyonlar, sunucunun kaynak kullanımını azaltır ve son kullanıcılara daha hızlı bir deneyim sunar. Doğru yapılandırıldığında, hem kullanıcı memnuniyetini artırır hem de sunucu maliyetlerini düşürebilir.
Sık Yapılan Hatalar ve Çözümleri
- Hata:
Server reached max_clientshatası. Çözüm: Sunucunun aynı anda hizmet verebileceği maksimum istemci sayısına ulaşıldığında bu hata oluşur.MaxClientsdirektifinin değerini artırmak (dikkatli olunmalı, sunucu kaynaklarını aşmamalı) veyampm_eventgibi daha verimli MPM (Multi-Processing Module) kullanmak sorunu çözebilir. - Hata:
.htaccessdosyası çalışmıyor veyaForbidden (403)hatası veriyor. Çözüm: Bu genellikleAllowOverridedirektifinin yanlış yapılandırılmasından kaynaklanır. Ana Apache yapılandırma dosyasında (httpd.confveyaapache2.conf) ilgili dizin bloğundaAllowOverride Allveya gerekli direktifler için belirli izinler (örneğin,AllowOverride FileInfo) ayarlanmalıdır. - Hata: SSL/TLS sertifikası sorunları (
NET::ERR_CERT_AUTHORITY_INVALID). Çözüm: Sertifikanın doğru şekilde yüklenmediği, süresinin dolduğu veya ara sertifika zincirinin eksik olduğu anlamına gelir.SSLCertificateFile,SSLCertificateKeyFileve isteğe bağlı olarakSSLCertificateChainFiledirektiflerinin doğru dosya yollarına işaret ettiğinden ve sertifikanın geçerli olduğundan emin olunmalıdır. - Hata: Apache yapılandırma dosyasında sözdizimi hatası.
Çözüm:
apachectl configtestveyahttpd -tkomutu, yapılandırma dosyasındaki sözdizimi hatalarını tespit etmek için kullanılır. Komutun çıktısı, hatanın bulunduğu satırı ve nedenini gösterecektir. - Hata:
mod_rewritekuralları çalışmıyor. Çözüm:mod_rewritemodülünün etkinleştirildiğinden emin olun. Ayrıca,RewriteEngine Ondirektifinin ilgili sanal host veya dizin bloğunda etkin olduğundan veAllowOverride Allayarının.htaccessdosyaları için yapıldığından emin olunmalıdır.
Teknik Özellikler ve Standartlar
Apache HTTP Sunucusu, web teknolojisi standartlarına sıkı sıkıya bağlı kalarak çalışır. Temel olarak HTTP (Hypertext Transfer Protocol) protokolünün çeşitli sürümlerini destekler.
- HTTP/1.1: Halen en yaygın kullanılan protokoldür. Apache, bu protokoldeki Keep-Alive gibi özellikleri destekleyerek performansı artırır.
- HTTP/2: Daha hızlı ve verimli bir protokoldür. Apache'nin
mod_http2modülü aracılığıyla desteklenir. HTTP/2, sunucu itme (server push), başlık sıkıştırma (HPACK) ve çoklu akış (multiplexing) gibi özelliklerle web sayfa yükleme sürelerini önemli ölçüde azaltır. - Web Sunucusu API'leri (WSAPI): Apache, çeşitli programlama dilleri ve çerçeveleri için genişletilebilirlik sunan CGI (Common Gateway Interface), FastCGI ve mod_php gibi arayüzleri destekler. Bu, dinamik içerik oluşturma ve web uygulamalarını çalıştırma esnekliği sağlar.
- Güvenlik Standartları: SSL/TLS protokolünün güncel sürümlerini (TLS 1.2, TLS 1.3) ve güçlü şifreleme algoritmalarını destekleyerek güvenli veri iletimini sağlar.
- RFC Uyumluluğu: Apache, ilgili RFC (Request for Comments) dokümanlarında tanımlanan standartlara uyum sağlamaya çalışır, bu da onu diğer web sunucuları ve istemcilerle uyumlu hale getirir.
2026 Sektör Verileri ve İstatistikler
Web sunucu pazarındaki eğilimler ve kullanım oranları, teknoloji dünyasının dinamizmini yansıtmaktadır. Apache, uzun yıllardır pazar lideri konumunu korusa da, Nginx ve LiteSpeed gibi alternatiflerin yükselişi dikkat çekicidir.
- W3Techs 2026 verilerine göre, Apache tüm web sitelerinin yaklaşık %30'unda kullanılmaktadır ve hala en yaygın kullanılan web sunucu yazılımıdır.
- Statista 2026 raporuna göre, web sunucu pazarında Apache'yi Nginx (%35) ve Microsoft-IIS (%15) takip etmektedir. LiteSpeed ve OpenLiteSpeed gibi alternatiflerin kullanım oranı da artış göstermektedir.
- Cloudflare Radar 2026 verilerine göre, web trafiğinin büyük bir kısmı (%70) mobil cihazlardan gelmekte, bu da sunucuların mobil kullanıcılar için optimize edilmesinin önemini vurgulamaktadır.
- Netcraft 2026 araştırmasına göre, küresel olarak aktif web sitesi sayısı 2 milyarı aşmıştır ve bu sitelerin büyük çoğunluğu Apache veya Nginx üzerinde barındırılmaktadır.
İlgili Konular
Apache'nin yapılandırması ve kullanımı hakkında daha fazla bilgi edinmek için aşağıdaki makaleler faydalı olacaktır:
- Web Sunucusu Kurulumu: Apache gibi web sunucularının nasıl kurulup temel düzeyde yapılandırılacağına dair kapsamlı bilgiler içerir.
- Apache vs Nginx Hangisi Daha İyi?: Apache ve Nginx'in performans, özellikler ve kullanım senaryoları açısından karşılaştırmasını sunarak, hangi durumda hangisinin tercih edilebileceği konusunda rehberlik eder.

