Apache HTTP Sunucusunda bilgiyi değişkenlerde saklamak için ortam değişkenleri adı verilen bir mekanizma bulunur. Saklanan bu 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.
Apache ortamında bir ortam değişkenine müdahale etmenin en temel
yolu hiçbir koşula tabi olmayan
Esnekliği arttırmak için, [E=...]
seçeneğinin
kullanıldığı
Son olarak, 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.
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.
suexec.c
içinde
derleme sırasında tanımlanır.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.
Sunucu tarafında 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.
allow from env=
ve deny from env=
yönergeleri sayesinde ortam değişkenlerine dayalı olarak sunucuya
erişim denetim altında tutulabilir. Bunlar
Ortam değişkenleri %e
seçeneği
kullanılarak erişim günlüğüne kaydedilebilir. Bundan başka,
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.
disableenv=
ve
enableenv=
seçenekleri kullanılarak bir ortam
değişkenine bağlı olarak etkinleştirilebilir.
%{ENV:değişken}
biçemi
ENV:
öneki kullanılmadan belirtilen değişkenler ortam değişkenleri
değillerdir. Onlar
Birlikte çalışabilirlik sorunları Apache’nin belli istemcilerle
veri alışverişi sırasında davranışını değiştirmesini gerektirebilir.
Genellikle
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 DEFLATE
çıktı süzgeci iptal
edilir. Sıkıştırılmış olarak saklanan dosyalar kullanıyorsanız bu
değişkeni
no-gzip
Bu değişken atandığında, DEFLATE
süzgeci kapatılır ve
2.2.12 sürümünden beri kullanılabilmektedir.
Atandığı takdirde,
nokeepalive
Bu değişken atandığında,
prefer-language
Değer olarak en
, ja
veya
x-klingon
gibi bir dil kısaltması verilerek atanmışsa
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.
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
Önceki sürümlerde bilinen istemci davranışlarına karşı önlem olarak
aşağıdaki satırların httpd.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
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.
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.
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.