<-
Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4

Apache’de Ortam De?i?kenleri

Mevcut Diller:  en  |  fr  |  ja  |  ko  |  tr 

Apache HTTP Sunucusunu etkileyen ortam de?i?kenleri iki ?e?ittir.

?lki, i?letim sisteminin denetimindeki ortam de?i?kenleridir. Bu de?i?kenlere de?er atama i?lemi sunucu ba?lat?lmadan ?nce yap?l?r. Bunlar yap?land?rma dosyalar?n?n i?inde kullan?labilir. Ayr?ca, istenirse PassEnv y?nergesi kullan?larak bunlar CGI betiklerine ve SSI sayfalar?na da aktar?labilir.

?kincisi ise, Apache HTTP Sunucusunun kendi ortam de?i?kenleridir. Bu de?i?kenlerde saklanan bilgi eri?im denetimi, günlük kayd? gibi ?e?itli i?lemleri denetlemekte kullan?labilir. De?i?kenler ayr?ca, CGI betikleri gibi harici uygulamalarla ileti?im mekanizmas? olarak da kullan?labilir. Bu belgede bu de?i?kenler üzerindeki i?lemlere ve kullan?m ?ekillerine de?inilmi?tir.

Bu de?i?kenlere ortam de?i?kenleri dense de i?letim sisteminin ortam de?i?kenleri gibi de?illerdir. Bunlar sadece Apache ortam?nda ge?erli de?i?kenler olup i?letim sisteminin bu de?i?kenlerden haberi olmaz. Sadece CGI betikleri ve SSI sayfalar? gibi harici uygulamalar taraf?ndan üretilen ortam de?i?kenleri sistem ortam?n?n de?i?kenleri haline gelirler. ??letim sistemi ortam?na ?al??makta olan sunucudan müdahale etmek isterseniz i?letim sisteminizin kabu?u taraf?ndan sa?lanan standart ortam müdahale mekanizmalar?n? kullanmal?s?n?z.

Support Apache!

Ayr?ca bak?n?z:

top

Ortam De?i?kenlerinin Atanmas?

Temel Ortamda De?i?iklik

Apache ortam?nda bir ortam de?i?kenine müdahale etmenin en temel yolu hi?bir ko?ula tabi olmayan SetEnv y?nergesini kullanmakt?r. Bu de?i?kenleri Apache ba?lat?l?rken sistem ortam de?i?kenleri haline getirmek i?in PassEnv y?nergesi kullan?labilir.

?ste?e Ba?l? ?artl? Atamalar

Esnekli?i artt?rmak i?in, mod_setenvif modülü ile iste?in ?zelliklerine uygun olarak her iste?e ?zel de?i?kenler atayabilmek mümkün k?l?nm??t?r. ?rne?in, bir de?i?ken sadece iste?i yapan taray?c?ya ?zgü bir de?erle veya sadece belli bir ba?l?k alan?n?na ba?l? olarak atanabilir. Daha da esnek bir mekanizma, ortam de?i?keni atamak i?in [E=...] se?ene?inin kullan?ld??? mod_rewrite modülünün RewriteRule y?nergesi ile sa?lanm??t?r.

E?siz Betimleyiciler

Son olarak, mod_unique_id UNIQUE_ID ortam de?i?kenine her istek i?in o iste?in ?ok ?zel ko?ullar alt?nda tüm di?er istekler aras?nda e?sizli?ini garanti edecek bir de?er atar.

Standart CGI De?i?kenleri

Apache yap?land?rmas?yla atanan ve kabu?a aktar?lan ortam de?i?kenlerinden ba?ka CGI Belirtiminin gerektirdi?i istekler hakk?nda temel bilgileri i?eren ortam de?i?kenlerinin CGI betikleri ve SSI sayfalar?nca atanabilmesi sa?lanm??t?r.

Baz? Yetersizlikler

top

Ortam De?i?kenlerinin Kullan?m?

CGI Betikleri

Ortam de?i?kenlerinin ba?l?ca ama?lar?ndan biri CGI betikleriyle ileti?im kurmakt?r. Yukar?da bahsedildi?i gibi CGI betiklerine aktar?lan ortam Apache yap?land?rmas?nda atanan de?i?kenlere ek olarak istek hakk?nda standart temel bilgileri de i?erir. Bu konuda ayr?nt?l? bilgi edinmek i?in CGI ??reticisine bakabilirsiniz.

SSI Sayfalar?

Sunucu taraf?nda mod_include modülünün INCLUDES süzgeci ile yorumlanan SSI sayfalar?nda ortam de?i?kenleri echo eleman? ile bas?labilir ve sayfay? iste?in ?zelliklerine uygun olarak olu?turmak i?in ortam de?i?kenleri ak?? denetim elemanlar? i?inde kullan?labilir. Apache ayr?ca, yukar?da bahsedildi?i gibi standart CGI ortam de?i?kenli SSI sayfalar?n? da sa?layabilmektedir. Daha ayr?nt?l? bilgi edinmek i?in SSI ??reticisine bakabilirsiniz.

Eri?im Denetimi

allow from env= ve deny from env= y?nergeleri sayesinde ortam de?i?kenlerine dayal? olarak sunucuya eri?im denetim alt?nda tutulabilir. Bunlar SetEnvIf y?nergesi ile birlikte kullan?lmak suretiyle sunucuya eri?im iste?in ?zelliklerine ba?l? olarak daha esnek bir tarzda denetlenebilir. ?rne?in, belli bir taray?c?n?n sunucuya eri?imi bu y?nergelerle engellenebilir.

?artl? Günlük Kayd?

Ortam de?i?kenleri LogFormat y?nergesinin %e se?ene?i kullan?larak eri?im günlü?üne kaydedilebilir. Bundan ba?ka, CustomLog y?nergesi sayesinde isteklerin günlü?e kaydedilip kaydedilmeyece?ine ortam de?i?kenlerine dayal? olarak karar verilmesi sa?lanabilir. Bunlar SetEnvIf y?nergesi ile birlikte kullan?lmak suretiyle günlük kay?tlar? iste?in ?zelliklerine ba?l? olarak daha esnek bir tarzda denetlenebilir. ?rne?in, gif uzant?l? dosyalar i?in yap?lan isteklerin günlü?e kaydedilmemesi veya sadece alt a??n?z?n d???ndan gelen isteklerin günlü?e kaydedilmesini isteyebilirsiniz.

?artl? Yan?t Ba?l?klar?

Header y?nergesi belli bir yan?t ba?l???n?n istemciye g?nderilip g?nderilmeyece?ine belli bir ortam de?i?keninin varl???na bakarak karar vermek i?in kullan?labilir. B?ylece ?rne?in, belli bir ba?l???n istemciye g?nderilmesine istemciden belli bir ba?l???n al?n?p al?nmad???na ba?l? olarak karar verilebilir.

Harici Süzge?lerin Etkinle?tirilmesi

mod_ext_filter taraf?ndan yap?land?r?lan harici süzge?ler ExtFilterDefine y?nergesinin disableenv= ve enableenv= se?enekleri kullan?larak bir ortam de?i?kenine ba?l? olarak etkinle?tirilebilir.

URL Kurgulamas?

RewriteCond y?nergesinin S?namaDizgesi olarak kullan?lan %{ENV:de?i?ken} bi?emi mod_rewrite yeniden yazma motorunun ortam de?i?kenlerine ba?l? kararlar almas?n? mümkün k?lar. Yaln?z ?una dikkat ediniz: mod_rewrite’ta ENV: ?neki kullan?lmadan belirtilen de?i?kenler ortam de?i?kenleri de?illerdir. Onlar mod_rewrite’a ?zgü di?er modüllerden eri?ilemeyen ?zel de?i?kenlerdir.

top

?zel Ama?l? Ortam De?i?kenleri

Birlikte ?al??abilirlik sorunlar? Apache’nin belli istemcilerle veri al??veri?i s?ras?nda davran???n? de?i?tirmesini gerektirebilir. Genellikle SetEnv ve PassEnv y?nergelerinden ba?ka BrowserMatch gibi y?nergelerle ortam de?i?kenleri atanarak bunu sa?layan mekanizmalar?n olabildi?ince esnek davranabilmesi sa?lanabilir.

downgrade-1.0

?stek, daha yüksek bir HTTP protokolüyle yap?lm?? olsa bile HTTP/1.0 iste?i olarak ele al?n?r.

force-gzip

DEFLATE süzgeci etkinse taray?c?n?n tercih etti?i kodlama ko?ulsuz olarak yoksay?larak s?k??t?r?lm?? ??kt? g?nderilir.

force-no-vary

?stemciye g?nderilmeden ?nce yan?ttan Vary alan?n?n ??kar?lmas?na sebep olur. Baz? istemciler bu alan? gerekti?i gibi yorumlayamazlar, bu de?i?ken atanarak bu sorunla kar??la??lmamaya ?al???l?r. Bu de?i?kenin atanmas? ayr?ca force-response-1.0 de?i?keninin de atanmas?na sebep olur.

force-response-1.0

HTTP/1.0 iste?i yapan istemcilere HTTP/1.0 yan?t? verilmesini zorunlu k?lar. AOL vekillerindeki bir sorun nedeniyle ger?eklenmi?tir. Baz? HTTP/1.0 istemciler HTTP/1.1 yan?tlar?nda do?ru davranmayabilirler; bu de?i?ken atanarak bunlar?n sorunlar? giderilebilir.

gzip-only-text/html

Bu de?i?kene "1" de?eri atand???nda text/html’den farkl? i?erik türleri i?in mod_deflate modülü taraf?ndan sa?lanan DEFLATE ??kt? süzgeci iptal edilir. S?k??t?r?lm?? olarak saklanan dosyalar kullan?yorsan?z bu de?i?keni mod_negotiation modülü de dikkate al?r (kimli?ine bakarak sadece gzip i?in de?il, tüm kodlamalar i?in bunu yapar).

no-gzip

Bu de?i?ken atand???nda, mod_deflate modülünün DEFLATE süzgeci kapat?l?r ve mod_negotiation modülü kodlanm?? kaynak teslimat?n? reddeder.

no-cache

2.2.12 sürümünden beri kullan?labilmektedir.

Atand??? takdirde, mod_cache art?k ?nbelleklenebilecek yan?tlar? kaydetmeyecektir. Bu ortam de?i?keni bir yan?t?n halihaz?rda mevcut bir iste?e sunulmak üzere ?nbellekte olup olmad???ndan etkilenmez.

nokeepalive

Bu de?i?ken atand???nda, KeepAlive y?nergesi iptal edilir.

prefer-language

De?er olarak en, ja veya x-klingon gibi bir dil k?saltmas? verilerek atanm??sa mod_negotiation modülünün normal davran???n? de?i?tirerek belirtilen dilde bir teslimat yap?lmaya ?al???l?r. B?yle bir belge yoksa normal uzla??m süreci uygulan?r.

redirect-carefully

?stemciye bir y?nlendirme g?nderirken sunucuyu daha dikkatli olmaya zorlar. Bu genellikle istemcinin y?nlendirmeler konusunda sorunlu oldu?u bilindi?i takdirde yararl? olur. Bu de?i?kenin ger?eklenme sebebi, dizin kaynaklar?na y?nlendirmeler i?in DAV y?ntemlerini kullanan Microsoft'un WebFolders yaz?l?m?ndaki bir sorundur.

suppress-error-charset

2.0.54 sürümünden beri mevcuttur.

Apache bir iste?e bir y?nlendirme ile yan?t verdi?inde istemci y?nlendirmeyi kendili?inden yapmaz veya yapamazsa kullan?c?ya yan?tla birlikte g?nderilen metin g?sterilir. Apache normal olarak bu metni ISO-8859-1 ile kodlar.

Ancak, y?nlendirmenin yap?ld??? sayfa farkl? bir karakter kümesine sahipse baz? taray?c? sürümleri as?l sayfan?n karakter kodlamas? yerine y?nlendirmenin kodlamas?n? kullanmaya ?al???rlar. Bu ?zellikle Yunanca gibi dillerde hedef sayfan?n hatal? yorumlanmas?na yol a?ar.

Bu ortam de?i?keninin atanmas? Apache’nin y?nlendirme i?in karakter kümesi belirtmemesini sa?lamak suretiyle hatal? taray?c?lar?n hedef sayfay? yanl?? karakter kodlamas?yla yorumlamas?n? ?nler.

Güvenlik Uyar?s?

Hata sayfalar?n?n bir karakter kümesi belirtilmeksizin yollanmas?, HTTP/1.1 belirtimine uymayan ve karakter kümesini i?eri?e bakarak tahmin etmeye ?al??an taray?c?larda (MSIE) kar?? siteden betik sald?r?s? yorumuna sebep olabilir. Girdi verisindeki UTF-7 i?erik (istek betimleyici gibi) kar?? siteden betik sald?r?lar?n? engellemek i?in tasarlanm?? normal ?nceleme mekanizmalar?yla ?ncelenmeyece?i i?in b?yle taray?c?lar UTF-7 karakter kodlamas? kullan?larak kolayca aldat?labilir.

force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked ve proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled

Bu y?nergeler mod_proxy modülünün normal protokol davran???n? de?i?tirirler. Daha ayr?nt?l? bilgi i?in mod_proxy ve mod_proxy_http belgelerine bak?n?z.

top

?rnekler

Bozuk ba?l?klar?n CGI betiklerine aktar?lmas?

2.4 sürümünden itibaren, mod_cgi modülü ve di?er modüllerde HTTP ba?l?klar?n?n ortam de?i?kenlerine d?nü?türülmesi ba?lam?nda Apache daha se?ici davranmaktad?r. ?nce HTTP ba?l???ndaki ge?ersiz karakterlerin tamam? alt?izgilere d?nü?türülür. Bu, ba?l?k zerki yoluyla yap?lan kar??-site-betiklerini-?al??t?rma sald?r?s?n? ?nlemeye y?neliktir. (Bak?n?z: Unusual Web Bugs, slide 19/20).

Bozuk ba?l?klar g?nderdi?i halde bunlara dokunulmamas?n? gerektiren bir istemciniz varsa, mod_setenvif ve mod_headers modüllerinin sundu?u yap?y? ?rnekteki gibi kullanarak bu sorunun üstesinden gelebilirsiniz:

#
# A?a??daki sat?rlarla bir istemcinin g?nderdi?i bozuk
# Accept_Encoding ba?l?klar?n?n istenildi?i gibi i?lenmesi
# sa?lanabilir.
#
SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding

Protokolü yanl?? yorumlayan taray?c?lar?n davran??lar?n?n de?i?tirilmesi

?nceki sürümlerde bilinen istemci davran??lar?na kar?? ?nlem olarak a?a??daki sat?rlar?n apache2.conf i?inde bulunmas? ?nerilirdi. Fakat, b?yle taray?c?lar art?k ortal?kta g?rünmedi?inden bu yap?land?rmaya da art?k gerek kalmam??t?r.

#
# A?a??daki y?nergeler normal HTTP yan?t davran???n? de?i?tirirler.
# ?lk y?nerge Netscape 2.x ve kendini ?yle g?steren taray?c?lar i?in
# kal?c? ba?lant?y? (keepalive) iptal eder. ?kinci y?nerge ise HTTP/1.1
# protokolü bozuk olan ve 301/302 durum kodlu y?nlendirme yan?tlar?
# kullan?ld???nda kal?c? ba?lant?lar? gerekti?i gibi desteklemeyen
# Microsoft 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?nergeler HTTP/1.0 yan?tlar?ndan ba?kas?na yabanc? olan
# taray?c?lara HTTP/1.1 yan?tlar?n?n g?nderilmesini iptal eder.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

Resim isteklerinin eri?im günlü?üne kaydedilmemesi

Bu ?rnek resim isteklerinin eri?im günlü?üne yaz?lmas?n? engeller. Bu ?rnek de?i?tirilerek belli dizinlerin veya belli konaklardan gelen isteklerin günlü?e kaydedilmesini engellemek amac?yla da kullan?labilir.

SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request

“Resim H?rs?zl???” i?in ?nlem al?nmas?

Bu ?rnekte sunucunuzda bulunmayan sayfalarda sunucunuzdaki resimlerin kullan?lmas?n?n nas?l ?nlenece?i g?sterilmi?tir. Bu yap?land?rma ?nerilmemekle birlikte nadir durumlarda i?e yarar. Tüm resimlerin /siteler/resimler dizini alt?nda tutuldu?u varsay?lm??t?r.

SetEnvIf Referer "^http://www\.example\.com/" local_referal
# Referrer bilgisi g?ndermeyen taray?c?lara izin verelim
SetEnvIf Referer "^$" local_referal
<Directory "/siteler/resimler">
  Require env local_referal
</Directory>

Bu teknik hakk?nda daha ayr?nt?l? bilgi edinmek i?in ServerWatch üzerindeki "Di?er sitelerin sizin resimlerinizle donat?lmas?n? engellemek" belgesine bak?n?z.

Mevcut Diller:  en  |  fr  |  ja  |  ko  |  tr 

top

Yorum

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
白小姐透特期期