|
httpd.conf Apache HTTP sunucusu ayar dosyası
Jul 29,2007 00:00
by
canawar
# httpd.conf -- Apache HTTP sunucusu ayar dosyası # Bu dosyada Apache, httpd, ana sunucu birbirine eş anlamda kullanılmıştır. # Kullanılan Türkçe terimlerin yanlarında, ilk sefere özel olarak İngilizce karşılıkları da verilmiştir. # Ancak, symbolic link, PID, Unix sistem çağrıları gibi temel kavramlar olduğu gibi bırakılmıştır. # Bu dosyada hata olup olmadığını /apache/dizini/bin/apachectl configtest'le kontrol edebilirsiniz. # Büyük bir değişiklik yaptıktan sonra, Apache'yi tekrar çalıştırmadan önce (../bin/apachectl restart), # dosyada hata olmadığından (configtest'le) emin olmalısınız.
#################### BAŞLA NOTLAR #################### # Apache Web sunucusu http.conf dosyasından sonra # eğer ResourceConfig ve/veya AccessConfig yönergeleriyle (directive) değiştirilmemişse # sırasıyla srm.conf ve access.conf dosyalarını okur. # # Bu dosya üç ana alana ayrılmıştır: # 1- Global Ortamı ayarları (Bu makinenin cevap verdiği, sanal sunucular dahil, bütün sunucuları # etkiler) # 2- Varsayılan sunucunun ayarları (Bu ayarlar, sanal sunucularda açık olarak 'override' edilebilir, # edilmediği takdirde bu bölümdeki ayarlar kullanılır) # 3- Sanal sunucu ayarları (Aynı IP adresinden farklı adreslere cevap vermek için kullanılıyor) # Ayar ve kayıt dosyalarının adları: # Dosya adı /'la başlıyorsa absolute path kullanılıyor (ör: /usr/local/apache/logs/dosya) # Dosya adı 'la başlamıyorsa ServerRoot'un değeri bu path'in önüne ekleniyor # (ör: logs/dosya --> /usr/local/apache/logs/dosya oluyor) #################### BİTİR NOTLAR #################### #################### BÖLÜM I ####################
########## BAŞLA Evrensel Ortam (Global Environment) ########## # Bu bölümdeki ayarlar Apache'nin genel çalışmasını etkiler, örneğin aynı anda kaç isteği karşılayacağı, # ayar dosyalarını nerede bulacağı vs. # ServerType: Ya inetd ya da standalone olabilir. Inetd, sadece Unix platformunda desteklenir. ServerType standalone # ServerRoot: Sunucunun ayar, hata ve kayıt dosyalarının durduğu ana dizin ismi. # UYARI: Dizin isminin sonunda / OLMAMALIDIR! ServerRoot "/usr/local/apache" # LockFile: Apache USE_FCNTL_SERIALIZED_ACCEPT ya da USE_FLOCK_SERIALIZED_ACCEPT parametreleri # kullanılarak derlenmişse, kilit dosyasının yerini belirtir. # Normal olarak bu dosyanın adını değiştirmenize gerek yoktur. Ancak, kilit dosyasını NFS üzerinden # 'mount' edilen bir yerde tutmak isterseniz değiştirin. # Kilit dosyası YEREL BİR DİSKTE TUTULMAK ZORUNDADIR!. Dosya isminin sonuna PID (Process ID) otomatik # olarak eklenir. #LockFile /usr/local/apache/logs/httpd.lock # PidFile: Sunucunun çalıştırıldığı zaman işlem numarasını (hafızadaki referansı denilebilir) tuttuğu # dosya. Sunucu durdurulurken bu numaraya sahip işlem öldürülür. PidFile /usr/local/apache/logs/httpd.pid # ScoreBoardFile: İçsel sunucu işlemleri bilgisinin tutulduğu dosya. # Bu dosyaya birçok platformda ihtiyaç yoktur. İhtiyacınız olup olmadığını dosyanın yaratılıp # yaratılmadığına bakarak anlayabilirsiniz. # Eğer aynı makinede iki farklı Apache sunucusu çalıştırıyorsanız, bu dosyaya ikisinin aynı anda # erişmediğinden emin olmalısınız. ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard # Normalde, sunucu bu dosyadan sonra, sırasıyla srm.conf ve access.conf dosyalarını işler. # Apache dağıtımında bu iki dosya boş olarak çıkar; kullanım kolaylığı için bütün yönergelerin tek bir # dosyada tutulması tavsiye edilir. # Sunucunun bu dosyaları yoksaymasını isterseniz: # Unix için "/dev/null", Windows için "nul" girebilirsiniz. #ResourceConfig conf/srm.conf #AccessConfig conf/access.conf # Timeout: İsteklerin geliş ve gönderilişleri arasında geçebilecek maksimum süre, bu süre aşıldığında, # sunucu gelen isteği düşürür (yoksayar). Timeout 120 # KeepAlive: Israrlı bağlantılara (persistent connection - aynı istemciden birden fazla istek) izin # verilip verilmeyeceği. Kaldırmak için "Off" yapınız. KeepAlive On # MaxKeepAliveRequests: Israrlı bir bağlantıda kaç isteğe izin verileceği. # Sınırsız bağlantı için 0 yapabilirsiniz. # En yüksek verim için bu sayıyı yüksek tutmanız tavsiye edilir. MaxKeepAliveRequests 100 # KeepAliveTimeout: Aynı istemciden, bir sonraki isteğin kabul edilmesi için gereken minimum süre. KeepAliveTimeout 15 # Boştaki sunucu-havuzu düzenlemesi. Boştaki çocuk-işlemler (child process) gelen yeni istekleri # karşılamak üzere hazırda bekler. Apache, bu sayıları tahmin etmenizi zorlamak yerine, gerek gördükçe # kendini yüke göre adapte eder, yani, o andaki yükü kaldırmak için, gerekli gördüğü kadar çocuk-sunucu # çalıştırmaya, ve birkaç tane de boş sunucu bekletmeye çalışır. # Eğer, belirli bir anda MinSpareServers değerinden az boş sunucu varsa, aradaki fark kadar yeni # sunucuyu beklemek üzere açar. Eğer, MaxSpareServers değerinden fazla sayıda çocuk-sunucu boşta # bekliyorsa, fazla olan kadarını öldürür. # Diğer bir deyişle, bu değerlerin yüksek olması, ani yüklenmelere karşı daha iyi tepki verilmesini, # düşük olması da, geçişlerin daha yumuşak olması ve daha az bellek kullanılması demektir. # Varsayılan değerler 5 ve 10'dur. MinSpareServers 8 MaxSpareServers 16 # Sunucu ilk çalıştırıldığında başlatılacak çocuk sunucu sayısı. StartServers 8 # Aynı anda çalışacak çocuk-sunucuların Max değeri, diğer bir deyişle aynı anda bağlanabilecek toplam # istemci sayısı. Eğer bu sayıya ulaşılırsa, istemciler KİLİTLENECEKTİR, dolayısıyla bu sayı düşük # tutulmamalıdır. Bu ayarın varsayılan değeri 256'dır ve derlemeden önce apache source dizinindeki # src/include/httpd.h dosyasındaki HARD_SERVER_LIMIT'le ayarlanması gerekir. Bu dosyayı değiştirip # tekrar derlemeden, bu ayarı arttıramazsınız. # Bu yönerge aynı zamanda, sunucunun kilitlenmesi ya da sızdırmaya başlaması durumunda, makineyi # çökertmemesi için kullanılmaktadır. MaxClients 1024 # MaxRequestsPerChild: Çocuk-sunucunun öldürülmeden önce toplam kaç isteğe cevap verebileceği. # Bu ayar sunucunun (ya da kullandığı kütüphanelerin) sızdırma olasılığına karşı kullanılır. # Birçok sistemde, bu ayara gereksinim duyulmaz, ancak bazılarında (ör. Solaris) sızdırma çok # olabilmektedir. Bu platformlar için, bu sayıyı 10000 civarı bir sayı yapabilirsiniz. 0 sınırsız # demektir. # UYARI: Bu sayı, açık tutulan (keepalive) bağlantıları kapsamaz, # yani, bir çocuk-sunucu aynı istemciden 10 isteğe cevap vermişse, bu 1 istek sayılır. MaxRequestsPerChild 10000 # Listen: Normal 'port' ve IP adresinin dışında, Apache'nin belli IP adresi ve/veya 'port'u # dinlemesini/cevap vermesinisağlar. # Ayrıca <VirtualHost> yönergesine bakınız. #Listen 3000 #Listen 12.34.56.78:80 # BindAddress: Bu ayarla sanal sunucuları destekleyebilirsiniz. Bu yönergeyle sunucunun hangi IP # adresini dinleyeceğini verebilirsiniz. # "*", bir IP adresi ya da tam açık bir Internet ismi (FQDN - Fully Qualified Domain Name, # ör: www.ulakbim.gov.tr) kullanabilirsiniz. # Ayrıca <VirtualHost> yönergesine bakınız. #BindAddress * # Dinamik Paylaşımlı Nesne (Dynamic Shared Object - DSO) Desteği # DSO'lar sunucunun başladıktan sonra çalışma zamanında (runtime) nesne kullanılacağı zaman # yüklenebilmesini sağlarlar. Sunucu ilk başlatılırken yüklenmezler. # Bir modülü kullanabilmek için karşılık gelen bir 'LoadModule' satırını aşağıya eklemeniz gerekir. # Ayrıntılı bilgi için Apache 1.3 dağıtımındaki README.DSO dosyasını okuyunuz. # Statik olarak (sunucu başlatılırken yüklenen) bağlanan modüllerin listesini görmek için 'bin' # dizininde 'httpd -l' komutunu çalıştırınız. # UYARI: Modüllerin yüklenme sırası önemlidir. Ne yaptığınızdan emin değilseniz, aşağıdaki sırayı # değiştirmeyiniz. # Ör: LoadModule foo_module libexec/mod_foo.so LoadModule define_module libexec/mod_define.so LoadModule includes_module libexec/mod_include.so LoadModule speling_module libexec/mod_speling.so LoadModule anon_auth_module libexec/mod_auth_anon.so LoadModule digest_module libexec/mod_digest.so LoadModule expires_module libexec/mod_expires.so LoadModule headers_module libexec/mod_headers.so <IfDefine SSL> LoadModule ssl_module libexec/libssl.so </IfDefine> LoadModule cookie_auth_module libexec/mod_auth_cookie.so LoadModule inst_auth_module libexec/mod_auth_inst.so LoadModule layout_module libexec/mod_layout.so LoadModule put_module libexec/mod_put.so LoadModule macro_module libexec/mod_macro.so LoadModule roaming_module libexec/mod_roaming.so LoadModule php4_module libexec/libphp4.so # Doğru modül işletim sırasının belirlenmesi için, eldeki modüllerden tüm modül # (statik ya da dinamik yüklenen) listesinin tekrar oluşturulması. # UYARI: Ne zaman, yukarıdaki LoadModule bölümünü değiştirirseniz, bu bölümü de değiştiriniz. ClearModuleList AddModule mod_env.c AddModule mod_define.c AddModule mod_log_config.c AddModule mod_mime.c AddModule mod_negotiation.c AddModule mod_status.c AddModule mod_info.c AddModule mod_include.c AddModule mod_autoindex.c AddModule mod_dir.c AddModule mod_cgi.c AddModule mod_asis.c AddModule mod_imap.c AddModule mod_actions.c AddModule mod_speling.c AddModule mod_userdir.c AddModule mod_alias.c AddModule mod_rewrite.c AddModule mod_access.c AddModule mod_auth.c AddModule mod_auth_anon.c AddModule mod_digest.c AddModule mod_expires.c AddModule mod_headers.c AddModule mod_so.c AddModule mod_setenvif.c <IfDefine SSL> AddModule mod_ssl.c </IfDefine> AddModule mod_auth_cookie.c AddModule mod_auth_inst.c AddModule mod_bandwidth.c AddModule mod_disallow_id.c AddModule mod_layout.c AddModule mod_put.c AddModule mod_session.c AddModule mod_macro.c AddModule mod_roaming.c AddModule mod_php4.c # ExtendedStatus: /server-status işlemcisi (handler) çağırıldığı zaman, detaylı bilgi üretilip # üretilmeyeceği. Varsayılanı 'Off'dur. ExtendedStatus On ########## BİTİR Evrensel Ortam (Global Environment) ########## #################### BÖLÜM II #################### ########## BAŞLA 'Varsayılan' Sunucu Ayarları ########## # 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 yerdeğ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 ServerSignature yönergesine bakınız. ServerAdmin webmaster@kurum.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.kurum.edu.tr, yerine # www.kurum.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.kurum.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 eriş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.kurum.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 dizinde 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 # kullanı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 # (ör. 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 ########## BAŞLA Kayıtalma Bölümü ########## # ErrorLog: Hata kayıtlarının tutulduğu dosya # Eğer sanal sunucularda, aşağıdaki dışında bir hata mesajı dosyası vermezseniz, o sanal sunucu için de # yine aşağıdaki dosya kullanılır. # Her sanal sunucu için ayrı bir hata kayıt dosyası açılmasını istiyorsanız, <VirtualHost> bölümlerinde # dosya isimlerini ayrıca vermeniz gerekir. ErrorLog /usr/local/apache/logs/error_log # LogLevel: Hata kayıtlarında tutulan mesajların seviyesi. # Şu değerlerden birini alabilir: debug, info, notice, warn, error, crit, alert, emerg. LogLevel warn # Aşağıdaki yönergeler, bazı takma adlar (nickname) tanımlar. # Ayrıca aşağıdaki CustomLog yönergesine bakınız. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent # Erişim kayıt dosyasının yeri ve biçimi. Aynı hata kayıt dosyalarında olduğu gibi, sanal sunucular için # ayrıca belirtilmezse, erişim kayıtları aşağıda belirtilen dosyada tutulur. CustomLog /usr/local/apache/logs/access_log common # Eğer kullanıcı ajanını (agent - kullanıcının programı; tarayıcı, robot, yansılama programı vb) ve # havale eden sayfayı (referer page) kayıtlarını da almak isterseniz, # aşağıdaki satırların başındaki #'leri kaldırınız. #CustomLog /usr/local/apache/logs/referer_log referer #CustomLog /usr/local/apache/logs/agent_log agent # Bütün erişim, ajan ve havale eden sayfa kayıtlarını tek bir dosyada tutmak isterseniz, aşağıdaki # yönergeyi kullanabilirsiniz. Bu yolu seçtiğiniz takdirde, yukarıdaki kayıtları iptal etmeniz tavsiye # edilir, aksi takdirde kayıtlar çifter çifter tutulmuş olacaktır. #CustomLog /usr/local/apache/logs/access_log combined ########## BİTİR Kayıtalma Bölümü ########## # Seçimlik olarak, sunucunun ürettiği sayfalarda (hata sayfaları, FTP dizin listeleri, mod_status ve # mod_info modüllerinin çıktıları vb, ama CGI çıktıları değil) sunucunun imzasının (Sunucu ismi, sürüm # numarası, sunucu 'port'u vb bilgilerinin eklenip eklenmeyeceği. # Email'i seçmeniz durumunda, (birden çok sanal sunucu varsa) o sunucunun yöneticisinin e-posta adresi # de eklenir. # Olası değerler: On | Off | EMail ServerSignature On ########## BAŞLA Alias Bölümü ########## # Aliases: Bu kısma istediğiniz kadar (sınırı yoktur) lakaplar (alias) ekleyebilirsiniz. # Kullanımı: Alias sahte-isim gerçek-isim <IfModule mod_alias.c> # UYARI: Eğer sahte-ismin sonuna bir / eklerseniz, sunucu bu /'ın adreste de olmasını şart koşar. # Yani, aşağıdaki örnekte, "/icons"a değil, sadece "/icons/"a lakap takılmış olur. Alias /icons/ "/usr/local/apache/icons/" <Directory "/usr/local/apache/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> # ScriptAlias: Bu ayar, hangi dizinlerin sunucu programcıkları (script) içerebileceğini belirtir. # ScriptAlias'lar aslında Alias'lar aynı şekilde kullanılır, tek farkı bu dizinlerdeki dosyalar, belge # olarak değil, programcık olarak olarak işleme sokulurlar. # Alias'lardaki / kuralı burada de geçerlidir. ScriptAlias /cgi-bin/ "/web/www/cgi-bin/" # Aşağıdaki "/usr/local/apache/cgi-bin" dizinini, yukarıda ScriptAlias yönergesinde verdiğiniz dizin # yapınız. <Directory "/usr/local/apache/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> </IfModule> ########## BİTİR Alias Bölümü ########## # Redirect yönergesi istemcilerin, artık sunucunuzda olmayan adresler için başka bir adrese # yönlendirilebilmesini sağlar. # Kullanımı: Redirect eski-URI yeni-URL (ör. Redirect /fakulte/giris.htm http://fakulte.kurum.edu.tr/) Redirect /ftp ftp://ftp.kurum.edu.tr/ ########## BAŞLA Indexing Bölümü ########## # Sunucunun ürettiği sayfaların görünümünü düzenleyen yönergeler. <IfModule mod_autoindex.c> # FancyIndexing'le dizin listelerinde sade görünüm yerine, simgelerin, tarihlerin vb bilgilerin de # görüntülenmesini sağlar IndexOptions FancyIndexing
# AddIcon* yönergeleri sunucunun farklı dosya tip veya uzantıları için hangi simgeleri kullanacağını # belirlerler. Sadece FancyIndexing kullanılan dizinlerde geçerlidirler. AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip # MIME tiplerine bakarak simge atama AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* # Dosya uzantısına bakarak simge atama AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ # DefaultIcon herhangi bir simge atanmamış dosyalar için kullanılan simgedir. DefaultIcon /icons/unknown.gif # AddDescription yönergesi, dosyaların sonuna küçük açıklamalar koyabilmenizi sağlar. # Bu açıklamalar her dosya için ayrı değil, aynı dosya tipine sahip tüm dosyaları toptan etkiler. # Sadece FancyIndexing'le tanımlı dizinlerde geçerlidir. # Kullanımı: AddDescription "açıklama" .dosya_uzantısı AddDescription "GZIP'le sıkıştırılmış dosya" .gz AddDescription "tar arşivi" .tar AddDescription "GZIP'lenmiş tar arşivi" .tgz # ReadmeName: sunucunun dizin listelerinin sonuna eklemek için baktığı dosyanın ismi. # HeaderName: sunucunun dizin listelerinin başına eklemek için baktığı dosyanın ismi. # Bu dosyaları kullanabilmek için bir <Directory> yönergesinin içinde "Options MultiViews # (ve varsa diğerleri)" olmalıdır. # Bu durumda sunucu önce dosya_ismi.html'i, yoksa dosya_ismi.txt dosyasını açmaya çalışır. # html uzantılı dosya MIME tipi text/html olarak, txt uzantılı dosya da MIME tipi text/plain olarak # gönderilir. ReadmeName README HeaderName HEADER # IndexIgnore: Dizin listelerinde saklanacak dosyaların isimleri. Kabuk (shell) stili jokerlere # (wildcard) izin vardır. IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t </IfModule> ########## BİTİR Indexing Bölümü ########## ########## BAŞLA Belge Tipleri Bölümü ########## <IfModule mod_mime.c> # AddEncoding: Farklı tarayıcılar için (ör. Mosaic/X 2.1+) sıkıştırılmış bilginin havada (on the fly) # açılabilmesini sağlar, ancak bütün tarayıcılar bunu desteklememektedir. # İsim benzerliğine rağmen, aşağıdaki Add*** yönergelerinin, FancyIndexing parametreleriyle # ilgisi yoktur. AddEncoding x-compress Z AddEncoding x-gzip gz tgz # AddLanguage: Bir dosyanın dilini belirtmenize izin verir. Daha sonra, tarayıcının anlayabileceği bir # dil seçimi için içerik pazarlığı (content negotiation) yapılır. # UYARI 1: uzantıyla dil belirtecinin aynı olması gerekmez, ör. dil belirteci pl olan Polonyaca için # Perl programcıklarıyla karışmaması için "AddLanguage pl .po" kullanılabilir. # UYARI 2: aşağıdaki örneklerde birçok durum için iki harflik ülke kısaltmasıyla, dil belirtecinin aynı # olmadığı da vurgulanmıştır, ör. 'Danmark/dk' versus 'Danish/da'. # UYARI 3: 'ltz' durumu RFC1766'yı üç harf kullanması nedeniyle ihlal etmektedir, ancak bunu düzeltmek # için çalışmalar sürmektedir. # Danish (da) - Dutch (nl) - English (en) - Estonian (ee) - French (fr) - German (de) # Greek-Modern (el) - Italian (it) - Portugese (pt) - Luxembourgeois* (ltz) - Spanish (es) # Swedish (sv) - Catalan (ca) - Czech(cz) - Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja) AddLanguage tr .tr AddLanguage en .en # AddLanguage da .dk # AddLanguage ja .ja # AddCharset ISO-2022-JP .jis # AddLanguage pl .po # AddCharset ISO-8859-2 .iso-pl # LanguagePriority: içerik pazarlığı sırasında bazı dillere öncelik vermenizi sağlar. Aşağıdaki durumda, # hem tr hem de en tanıyan bir tarayıcıya tr gönderilecektir. # Dolayısıyla, istediğiniz sırada dilleri listeleyiniz. <IfModule mod_negotiation.c> LanguagePriority tr en </IfModule> # AddType: mime.types dosyasını gerçekte açmadan üzerinde değişiklikler yapabilmenizi sağlar. # PHP 4.x'in çalışması için, aşağıdaki satırlar gereklidir: AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 AddType application/x-httpd-php-source .phps AddType application/x-tar .tgz # AddHandler: belli dosya uzantılarını belli programlara/hareketlere atamanıza izin verir. # Bu hareketler sunucunun içine gömülmüş de olabilir, Action yönergesiyle (aşağı bakınız) eklenmiş de # olabilir. # SSI (Server Side Include) ya ScriptAlias dizinleri dışında CGI kullanmak isterseniz, aşağıdaki # satırların başlarındaki #'leri kaldırınız. # CGI programcıkları için: # UYARI: Bu ayarı açmak, güvenliği ciddi derecede düşürür. #AddHandler cgi-script .cgi # SSI kullanmak için: #AddType text/html .shtml #AddHandler server-parsed .shtml # Apache'nin desteklediği bir özellik de dosyaları "olduğu gibi" gönderebilme özelliğidir. # asis dosyaları gönderilirken, Apache ayrıca başlık bilgileri eklemeyecektir, ancak bu durumda asis # dosyasında bu bilgilerin verilmesi gerekmektedir. # Bu özelliği kullanmak için, satırın başındaki #'i kaldırınız. #AddHandler send-as-is asis # Sunucu tarafı işlenen imagemap dosyalarını kullanmak için: #AddHandler imap-file map # Özel dosya uzantılarını bir PHP programına yönlendirmek için aşağıdakine benzer bir ayar kullanın. # NOT: İstemciler, çağırılan programın ismini görmeyeceklerdir. AddType text/html .ozelhtml AddHandler ozelisleme .ozelhtml Action ozelisleme /progs/onisleme.php
</IfModule> ########## BİTİR Belge Tipleri Bölümü ########## # Action: aşağıdaki kurala eşlenen dosya tipleri için, bir programcığın çağırılabilmesine sağlar. # Bu şekilde, sıkça çağırılan CGI dosya işleyicilerini URL'lerden atabilirsiniz. # Kullanımı: Action mime/tipi /cgi-programcığının/yeri # Kullanımı: Action handler-ismi /cgi-programcığının/yeri # MetaFiles: Meta bilgilerinin kullanılıp kullanılmayacağı # Meta bilgileri, aynı asis dosyalarına benzer, ancak sadece HTTP başlık (HTTP header) bilgilerini # içerirler. Bu meta bilgilerini kullanarak, dosyalarınıza varsayılanlar dışında da başlık bilgisi # ekleyebilirsiniz. # MetaFiles, MetaDir ve MetaSuffix yönergelerini kullanabilmeniz için, mod_cern_meta modülünü derleme # sırasında eklemiş olmanız gerekir. # Kullanımı: MetaFiles on|off # Aşağıdaki gibi kullanmanız tavsiye edilir: #<IfModule mod_cern_meta.c> # MetaFiles on #</IfModule> # MetaDir: Apache'nin meta bilgilerini bulabileceği dizinin ismi. #MetaDir .web # MetaSuffix: meta bilgisini tutan dosyaların uzantısı #MetaSuffix .meta # Özelleştirilebilir hata mesajları bölümü # Üç tipte gelmektedir: # 1- Düz metin #ErrorDocument 500 "Sunucu kötü birşey yaptı. # UYARI: Tırnak (") düz metni belirtir, çıktıya gönderilmez. # 2- Yerel yönlendirmeler #ErrorDocument 404 /olmayan_dosya.html # Yerel /olmayan_dosya.html URL'ine yönlendirmek için #ErrorDocument 404 /cgi-bin/olmayan_islemcisi.pl # Bu şekilde olmayan dosyaları, bir program ya da SSI kullanan bir dosyaya yönlendirebilirsiniz. # 3- Harici yönlendirmeler #ErrorDocument 402 http://baska.bir.sunucu.edu.tr/kayit_formu.html # UYARI: Bu durumda, orjinal isteğe ait birçok ortam değişkeni böyle bir programcığa havale # edilmeyecektir. # Davranışın tarayıcı tipine göre özelleştirilmesi <IfModule mod_setenvif.c> # Aşağıdaki yönergeler, normal HTTP cevap davranışını değiştirirler. # İlk yönerge, Netscape 2.x ve onu taklit eden tarayıcılar için 'keepalive'ı kapatırlar. # İkinci yönerge, HTTP/1.1 desteğinde hatalar olan Internet Explorer 4.0b2 içindir. BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # Aşağıdaki yönerge, HTTP/1.1'e tam anlamıyla uyumlu olmayan ajanlar için HTTP/1.0 protokolüne geçmek # içindir. BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 </IfModule> ########## BAŞLA Status/Info Bölümü ########## # Sunucu durum raporlarını, (güvenlik nedenleriyle) sadece kendi IP'lerinizden erişebilir kılmak için, # aşağıdaki bloğu kendi IP bloğunuzla değiştiriniz. # Bu özelliğin kullanılabilmesi için mod_status.c modülünün yüklenmiş olması gerekir. # İsterseniz "Allow from .kurum.edu.tr" tipinde bir yönerge de kullanabilirsiniz, ancak bu durumda # HostnameLookups On yönergesini yukarıda belirtmiş olmalısınız. # Bu özelliği kullanmak için, http://www.kurum.edu.tr/server-status yazmalısınız. <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 193.140.83. </Location> # Sunucunun ayarlarını, (güvenlik nedenleriyle) sadece kendi IP'lerinizden erişilebilir kılmak için, # aşağıdaki bloğu kendi IP bloğunuzla değiştiriniz. # Bu özelliğin kullanılabilmesi için mod_info.c modülünün yüklenmiş olması gerekir. # İsterseniz "Allow from .kurum.edu.tr" tipinde bir yönerge de kullanabilirsiniz, ancak bu durumda # HostnameLookups On yönergesini yukarıda belirtmiş olmalısınız. # Bu özelliği kullanmak için, http://www.kurum.edu.tr/server-info yazmalısınız. <Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 193.140.83. </Location> ########## BİTİR Status/Info Bölümü ########## ########## BİTİR 'Varsayılan' Sunucu Ayarları ########## ########## BAŞLA Sanal Sunucular Bölümü ########## # VirtualHost: Eğer aynı makineden farklı adres/IP'lere cevap vermek istiyorsanız, herbiri için # VirtualHost'lar tanımlamanız gerekir. Daha fazla bilgi için http://www.apache.org/docs/vhosts/ # adresine bakınız. Sanal sunucu ayarlarınızın doğru olup olmadığını '/apache/dizini/bin/httpd -S' # komutuyla kontrol edebilirsiniz. # Eğer isim-tabanlı sanal sunucular kullanmak isterseniz, en az bir tane IP adresi (ve port numarası) # tanımlamanız da gerekir.
|