‘VARSAYILAN' SUNUCU AYARLARI
Bu bölümdeki ayarlar, hiçbir sanal sunucu tarafından ele alınmayan istekleri karşılayan 'Varsayılan' sunucu ayarlarını içerir. Ayrıca, <VirtualHost>'larda tanımlanmayan her değer bu bölümden alınır.
Buradaki bütün yönergeler <VirtualHost>'larda yeralabilir, ki o zaman, bu bölümdeki yönergeler'override' edilmiş olur, ve <VirtualHost>'daki değer kullanılır.Eğer yukarıda Evrensel Ortam bölümünde, ServerType inetd olarak ayarlanmışsa, aşağıdaki 'port', 'user' ve 'group' ayarlarının bir etkisi olmayacaktır. Bu durumda, ServerAdmin kısmına atlayınız.
Port: Tekbaşına (standalone) sunucunun dinlediği 'port'. 1023'den küçük 'port'lar için httpd'nin çalıştırılma sırasında root haklarına sahip olması gerekir.
Port 80
Eğer, httpd'yi (Ana sunucu) farklı bir kullanıcı ya da grupta çalıştırmak isterseniz,başlangıçta root olarak çalıştırın, httpd kendisini o kullanıcıyla/grupla yer değiştirecektir.
Kullanıcı/Grup: httpd'nin çalışacağı kullanıcı ve/veya grup ismi (ya da numarası).SCO Unix (ODT 3) için "nouser" ve "nogroup" kullanınız. . HPUX'da paylaşımlı belleği "nobody" kullanıcısıyla kullanamazsınız, bunun yerine www gibi bir kullanıcı yaratıp onu kullanın.
UYARI: Bazı işletim sistemlerinin çekirdekleri, grup numarası 60000'in üzerinde olduğu zaman setgid(Grup) ya da semctl(IPC_SET) Unix fonksiyonlarını çağırmayı reddeder.Bu sistemlerde webgroup grubunu kullanmayın.
User webuser
Group webgroup
ServerAdmin: Sunucuda problem çıktığında, e-posta gönderilebilecek adres. Bu adres,
hata mesajları gibi, sunucu tarafından üretilen sayfalarda "görünebilir".Ayrıca Server Signature yönergesine bakınız.
ServerAdmin
webmaster@marun.edu.tr
ServerName: Eğer makinenizin ismi www'den farklıysa, istemciye geri gönderilecek sunucu ismini değiştirebilmenizi sağlar. Yani, makinenin gerçek ismi, ör. sunucu.marun.edu.tr, yerine www.marun.edu.tr kullanmak isterseniz, bu ayarı
değiştirin.
UYARI: Kendi başınıza makine ismi yaratıp, bunların çalışmasını bekleyemezsiniz.
Burada verdiğiniz ismin DNS'de tanımlı olması gerekir. Daha detaylı bilgi için sistem yöneticinize başvurunuz. Eğer sunucunuzun kayıtlı bir DNS ismi yoksa, IP numarasını giriniz. Ancak bu durumda, sunucuya sadece IP adresiyle erişebilirsiniz (ör. http://123.45.67.89/).
ServerName www.marun.edu.tr
DocumentRoot: Belgelerinizi sunacağınız dizin. Varsayılanı, bütün isteklerin bu dizinden karşılanmasıdır. Ancak, sembolik bağ (symbolic link) ya da alias (lakap) kullanarak farklı dizinlere erişim de sağlayabilirsiniz. Kişisel tecrübelere dayanarak Web sayfalarının
Apache programlarının durduğu dizinden farklı bir dizinde durması yararlı olacaktır. Bu
hem yedeklemede, hem de dosyaların yönetiminde avantaj sağlar. Bu yolu seçtiğiniz takdirde, ör. /web dizini altında her sanal sunucu için ayrı bir kök dizin, bu dizinlerin altında da HTML sayfaları ve CGI programları için ayrı dizinler açmak işinizi rahatlatacaktır.
DocumentRoot "/web/www/docs"
Apache'nin erişiminin olduğu her dizin ve altdizinleri için, hangi servis, özelliklerin vb izin verildiği ve/veya verilmediği belirtilebilir. İlk olarak "varsayılan" dizinin haklarını epey kısacağız. Güvenliği maksimuma getirmek isterseniz FollowSymLinks'i de kaldırıp Options None yapın. FollowSymLinks'le kullanıcılarınızdan biri /etc gibi kritik bir dizine bir symbolik verebilir ve bu dizin dış dünya tarafından okunabilir hale gelir. Bir diğer alternatif olarak görülen SymLinksIfOwnerMatch daha güvenlidir ancak istenen dizinin birkaç seviye içerde olması durumunda tepki süresini epey yavaşlatır. Örneğin "Option SymLinksIfOwnerMatch" verilmişse, sunucu
/usr/local/apache/htdocs/dosyalar/ dizini istendiği zaman /usr, /usr/local, /usr/local/apache, /usr/local/apache/htdocs ve /usr/local/apache/htdocs/dosyalar dizinlerinin *hepsinin* bir symbolik link olup olmadığını ve sahiplerinin kim olduğunu kontrol eder.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Bu noktadan itibaren, ayrıntılıca hangi özelliklerin kullanılabileceği belirtilebilir. Dolayısıyla, birşeyler istediğiniz gibi çalışmıyorsa, aşağıda açık olarak izin verildiğine emin olun.Bu dizin DocumentRoot yönergesinde verdiğiniz dizin olmalıdır.
<Directory "/web/www/docs">
Bu ayar aşağıdakilerin yanısıra "None", "All", veya "Indexes", "Includes", "FollowSymLinks","ExecCGI", "MultiViews"'in bir kombinasyonu olabilir.
UYARI: "MultiViews" açık olarak(explicitly) vermek zorundasınız --- "Options All" bu işi görmez. Daha fazla güvenlik istiyorsanız, hızdan bir miktar taviz vererek buradaki FollowSymLinks'i SymLinksIfOwnerMatch yapabilirsiniz. Bu şekilde, sembolik bağın sahibiyle, bağ verilen yolun sahibi aynı olmadıkça o yol açılmayacaktır. Ör. webuser kullanıcısı /etc'ye sembolik bağ verse bile, /etc'nin sahibi root olduğu için /etc'nin içeriği Web sitesinden erişilemez olur.
Options Indexes FollowSymLinks MultiViews
Belli dizinlere .htaccess dosyası koyarak, o dizine şifreli erişim, belli adreslerden rişim gibi kısıtlamalar getirebilirsiniz. Bu ayar .htaccess dosyalarında nelerin 'override' edilebileceğini söyler. Aşağıdakinin yanısıra "All", ya da "Options", "FileInfo", "AuthConfig", "Limit"'in bir kombinasyonu olabilir.
AllowOverride None
Bu sunucudan kimlerin dosya okumasına izin verildiği ayarı.Bütün adreslerden erişime izin ver...
Order allow,deny
Allow from all
Sadece aşağıdaki IP bloğundan okumaya izin ver...
Order deny,allow
Allow from 193.140.83.
Deny from all
</Directory>
UserDir: Sistemdeki kullanıcıların kendi sayfalarına
http://www.marun.edu.tr/~kullanıcı_adı/ şeklinde ulaşabilmeleri için ev dizinlerinde oluşturmaları gereken dizinin adı.
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
Aşağıdaki satırla, Apache'nin çalışma esnasında, LD_LIBRARY_PATH ortam değişkeninini verilen şekliyle kullanmasını belirtiyoruz. Bu satır, kurulan bazı modüllerin
kütüphanelerinin varsayılan olarak /usr/local/lib'e kurulması ve Apache'nin varsayılanında /usr/local/lib'i yeralmaması nedeniyle gereklidir.
<IfModule mod_env.c>
SetEnv LD_LIBRARY_PATH /usr/local/lib:/lib:/usr/ucblib:/usr/openwin/lib
</IfModule>
Kullanıcı dizinlerine erişim hakları. Aşağıdaki ayarlar, bu dizinlere sadece-okuma (read-only) izni verildiği bir örnektir.
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
DirectoryIndex: Dizin endeksleri (diğer bir deyişle varsayılan sayfa) için kullanılan dosya ya da dosyaların adları. Birden fazla girdi arasında boşluk kullanınız. Apache,istenen izinde bu dosyalara verilen sırada bakar, ve bulduğu *ilkini* gönderir, yani sıralama önemlidir.
<IfModule mod_dir.c>
DirectoryIndex index.ozeluzanti index.php index.php3 index.html index.htm
</IfModule>
AccessFileName:Dizinlerin altında erişim kontrol bilgilerinin tutulduğu dosya. Ayrıca AllowOverride yönergesine bakınız
AccessFileName .htaccess
Aşağıdaki satırlar, istemcilerin .htaccess dosyalarına doğrudan erişimini kısıtlar. Bu dosyaların doğrulama bilgisi (şifre vb) gibi kritik bilgiler tutması nedeniyle, doğrudan erişimin kısıtlanması gerekir. Bu dosyalara ancak Apache programının kendisi erişebilir. Bu davranışı istemiyorsanız, aşağıdaki satırların başına # koyunuz. Ayrıca, eğer yukarıda AccessFileName yönergesinde bu dosyalara farklı bir isim verdiyseniz, bu ayarı da değiştiriniz. Aşağıdaki ayar .ht'yle başlayan tüm dosyaları filtreler, yani, .htaccess'den başka (bazı sitelerin kullandığı) .htpasswd, .htfiles gibi dosyaları da korur.
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
ozel.dosya ismindeki dosyaların sunucunun kendisi haricinde kimse tarafından
okunmaması için. Örneğin bir PHP programı sunucu tarafında çalıştığı için bu dosyaları okuyabilirken, istemciler doğrudan bu dosyalara erişemezler.
<Files ~ "^ozel\.dosya$">
Order allow,deny
Deny from all
</Files>
CacheNegotiatedDocs: Varsayılanı, Apache'nin her sayfayla birlikte "Pragma: no-cache" göndermesidir.
Böylece 'Cache/Proxy' (Önbellek/Vekil) sunucuları (ör. http://wwwcache.ulak.net.tr/) bu dosyaları önbelleklemezler. Eğer bu davranışı istemiyorsanız, aşağıdaki satırın başındaki #'i
kaldırınız.
CacheNegotiatedDocs
UseCanonicalName: (Apache 1.3 ve yukarısı) Bu ayar açıldığı zaman, ne zaman Apache geri-referans (self-referencing - cevabın geldiği sunucuyu gösteren) URL oluştursa, ServerName ve Port yönergelerinden oluşturulan bir 'Canonical' (yaklaşık olarak çözülmüş/gerçek denilebilir) isim ullanır. Bu ayar kapatıldığı zaman, Apache, istemcinin gönderdiği sunucuismi:port ikilisini kullanır. Ayrıca bu ayar, CGI programlarındaki SERVER_NAME ve SERVER_PORT değişkenlerini de etkiler.
UseCanonicalName On
TypesConfig: MIME tiplerinin verildiği dosyanın nerede tutulduğunun ayarı.
<IfModule mod_mime.c>
TypesConfig /usr/local/apache/conf/mime.types
</IfModule>
DefaultType: Sunucu, dosya uzantısında MIME tipini bulamadığı zaman kullanacağı varsayılan MIME tipidir. Eğer sunucunuzda çoğunlukla metin ya da HTML dosyaları varsa, "text/plain" iyi bir değerdir. Eğer çoğunlukla ikili (binary), ör. program ya da resim, dosyanız varsa, tarayıcıların istediği dosyayı metin gibi göstermeyeçalışmaması için, "application/octet-stream" kullanmak isteyebilirsiniz.
DefaultType text/plain
mod_mime_magic modülü, sunucunun dosyanın içeriğine bakarak dosya tipini bulabilmesini sağlar.(UNIX'de resim dosyalarının uzantısının .gif, .jpg olması zorunlu değildir). MIMEMagicFile yönergesi, mime_magic modülü için ipuçları dosyasının nerede tutulduğunu ayarlar.Eğer yukarıdaki "Evrensel Ortam: DSO" bölümünde bu modülün LoadModule yönergesiyle yüklenmiş olması gerekmektedir.
<IfModule> bu modülün gerektiği şekilde yüklenip yüklenmediğini kontrol eder, aksi takdirde sunucu hata verir.
<IfModule mod_mime_magic.c>
MIMEMagicFile /usr/local/apache/conf/magic
</IfModule>
HostnameLookups: Sunucu kayıtlarında (logfiles) İstemcilerin (varsa) açık isimlerinin(ör. descent.ulakbim.gov.tr) mi, yoksa sadece IP numaralarının (ör. 193.140.83.12) mı tutulacağı. Varsayılanı "Off"dur çünkü tersi durumda her istek için DNS sunucusundan istemcinin varsa ismi bulunmaya çalışılır. Diğer bir deyişle, "Off" durumunda sunucunun tepki süresi iyileşir. Ancak kayıtlarınızda istemcilerin tam adreslerini (FQDN) görmek isterseniz açın (On durumuna getirin), güvenliğe destek olan cinsten bir yönergedir.
HostnameLookups Off