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

Apache’de Ortam Değişkenleri 2f53f

Mevcut Diller:  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 Env 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.

 Apache!

Ayrıca bakınız: 57581q

top

Ortam Değişkenlerinin Atanması 1mv34

Temel Ortamda Değişiklik 3m5y71

Apache ortamında bir ortam değişkenine müdahale etmenin en temel yolu hiçbir koşula tabi olmayan Env yönergesi kullanılabilir.

İsteğe Bağlı Şartlı Atamalar 13384j

Esnekliği arttırmak için, RewriteRule yönergesi ile sağlanmıştır.

Eşsiz Betimleyiciler 6ea1z

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 2s1o4w

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 2d1s6m

top

Ortam Değişkenlerinin Kullanımı l4a51

CGI Betikleri y2u2e

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ı 23k3j

Sunucu tarafında SSI Öğreticisine bakabilirsiniz.

Erişim Denetimi 4y5rz

Require env ve Require not 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ı k6l2k

Ortam değişkenleri 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ı 4k356

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 151g6d

ExtFilterDefine yönergesinin disableenv= ve enableenv= seçenekleri kullanılarak bir ortam değişkenine bağlı olarak etkinleştirilebilir.

URL Kurgulaması 5b6834

mod_rewrite’a özgü diğer modüllerden erişilemeyen özel değişkenlerdir.

top

Özel Amaçlı Ortam Değişkenleri 3z6q6b

Birlikte çalışabilirlik sorunları Apache’nin belli istemcilerle veri alışverişi sırasında davranışını değiştirmesini gerektirebilir. Genellikle BrowserMatch gibi yönergelerle ortam değişkenleri atanarak bunu sağlayan mekanizmaların olabildiğince esnek davranabilmesi sağlanabilir.

downgrade-1.0 6b56e

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

force-gzip 76f3g

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 6r242n

İ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 434z2s

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 5l675v

Bu değişkene "1" değeri atandığında text/html’den farklı içerik türleri için 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 3c651w

Bu değişken atandığında, mod_negotiation modülü kodlanmış kaynak teslimatını reddeder.

no-cache q1y55

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 121y6g

Bu değişken atandığında, KeepAlive yönergesi iptal edilir.

prefer-language 2z63t

Değer olarak en, ja veya x-klingon gibi bir dil kısaltması verilerek atanmışsa uzlaşım süreci uygulanır.

redirect-carefully 3u1z6k

İ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 1ha6u

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ı 1k6p5

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 2d5zv

Bu yönergeler mod_proxy_http belgelerine bakınız.

top

Örnekler 6k2sq

Bozuk başlıkların CGI betiklerine aktarılması 2w3k15

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_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 61p4q

Ö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 m4g6q

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ı 4o4c5

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:  tr 

top

Yorumlar 3y13v

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 by our s 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 Libera.chat, or sent to our mailing lists.