Return-Path:
The Apache HTTP Server is a modular program where the
@@ -308,7 +309,8 @@
Apache HTTP Sunucusu Sürüm 2.2 Apache HTTP Sunucusu modüler bir program olup, yönetici sadece bir
+ grup modül seçerek sunucuya işlevsellik ekleyebilir. Modüller sunucunun
+ derlenmesi sırasında doğrudan Bu belgede DSO modüllerinin kullanımının yanında teorisine de
+ değinilecektir. Apache modüllerini yüklemek için DSO desteği, Apache çekirdeğine
+ durağan olarak ilintilenerek derlenmiş olan Apache modülleri için (özellikle üçüncü parti modüller için) DSO
+ dosyası üretimini kolaylaştırmak amacıyla Apache 2.x’in DSO özelliklerine bir giriş olarak burada kısaca bir
+ bilgi vermekle yetinilecektir: Tüm durumlarda derlenen paylaşımlı modülü Apache’nin etkin kılabilmesi
+ için Günümüzün Unix türevlerinde var olan şık bir mekanizma sayesinde
+ çalıştırılabilir bir programın adres uzayına çalışma anında yüklenmek
+ veya ilintilenmek üzere Devingen Paylaşımlı Nesneler (DSO -
+ Dynamic Shared Object) adı verilen, özel bir biçem kullanarak kodlanmış
+ program parçaları oluşturulabilir. Bu yükleme normalde iki yolla yapılabilir: Ya çalıştırılabilir
+ programın başlatılması sırasında yüklenen İlk yöntemde kullanılan DSO’lara genelde paylaşımlı
+ kütüphaneler veya DSO kütüphaneleri adı verilir ve
+ bunların dosyaları Çalıştırılabilir program içindeki simgelere normalde DSO içinden
+ atıfta bulunulmaz (genel kod kütüphanesinin başka programlarca da
+ kullanılması nedeniyle). Bu bakımdan DSO tarafında böyle bir çözümleme
+ yapılmaz. Çalıştırılabilir program da DSO’daki simgeleri kendisi
+ çözümlemeye uğraşmaz, bu işlemlerden tamamen Unix yükleyicisi
+ ( İkinci yöntemde kullanılan DSO’lara yine paylaşımlı
+ kütüphaneler veya DSO kütüphaneleri adı verilir fakat
+ bunların dosyaları geçerli kabule göre Son olarak, DSO’nun programlama arayüzünün getirilerinden yararlanmak
+ amacıyla çalıştırılabilir program, daha sonra dağıtım tabloları vb.
+ yerlerde kullanmak üzere DSO mekanizmasının bu basit gibi görünen işleyişinde zorluk içeren bir
+ adım şudur (başkaları da olabilir): Bir programın işlevselliğini
+ genişletmek için DSO kullanılırken (ikinci yöntem) çalıştırılabilir
+ programdan DSO için simgelerin çözümlenmesi. Zorluğun sebebi,
+ "tersine çözümleme" yapılmasıdır; çalıştırılabilir programın simge
+ kümesindeki DSO simgeleri kütüphane tasarımına aykırı bir şekilde
+ çözümlenir ve bu uygulama tüm platformlarda hazır olarak
+ desteklenmediği gibi standartlaşmış da değildir. Geçer uygulamada
+ çalıştırılabilir programın evrensel simgeleri çoğunlukla yeniden dışa
+ verilmez ve bu bakımdan bir DSO içinde kullanılmaları uygun değildir.
+ Esas sorun, çalıştırılabilir bir programın işlevselliğini çalışma
+ anında genişletmek için DSO kullanımı sırasında ilintileyicinin tüm
+ evrensel simgeleri dışa vermesini zorlamanın bir yolunu bulmaktır. Paylaşımlı kütüphane yaklaşımı bu bakımdan türünün tek örneğidir,
+ çünkü DSO mekanizması özellikle bunun için tasarlanmıştır, dolayısıyla
+ işletim sisteminin sağladığı hemen hemen tüm kütüphaneler için
+ kullanılabilir. Diğer taraftan, bir programın işlevselliğini
+ genişletmek için paylaşımlı nesne kullanımı çoğu program tarafından
+ kullanılan bir şey değildir. 1998 itibariyle, DSO nesneleriyle çalışma anında çalıştırılabilir
+ program işlevselliğini genişleten başlıca birkaç yazılım paketi vardır:
+ Perl 5 (XS mekanizması ve DynaLoader modülü üzerinden), Netscape
+ Sunucusu, vd. 1.3 sürümünden itibaren Apache de bu gruba katıldı. Çünkü
+ Apache, modül kavramını zaten program işlevselliğini genişletmek için
+ kullanıyordu ve temel işlevselliğine dış modülleri ilintilemek için
+ dahili olarak dağıtım listesine dayalı bir yaklaşım kullanmaktaydı.
+ Dolayısıyla Apache, modüllerini çalışma anında yüklemek için DSO
+ kullanmaya baştan yazgılıydı. Yukarıda bahsedilen DSO’ya dayalı özelliklerin getirileri
+ şunlardır: DSO kullanımının götürüleri ise şunlardır: The Apache HTTP Server provides a mechanism for storing
@@ -67,20 +68,20 @@
For additional flexibility, the directives provided by
- mod_setenvif allow environment variables to be set on a
- per-request basis, conditional on characteristics of particular
+ Finally, mod_unique_id sets the environment variable
- Finally, Server-parsed (SSI) documents processed by mod_include's
+ Server-parsed (SSI) documents processed by
+ Access to the server can be controlled based on the value of
environment variables using the Environment variables can be logged in the access log using
the The The When set to a value of "1", this variable disables the DEFLATE
- output filter provided by When set to a value of "1", this variable disables the
+ Devingen Paylaşımlı Nesne Desteği
+
+
+ httpd
programının
+ içinde derlenebileceği gibi Devingen Paylaşımlı Nesneler (DSO - Dynamic
+ Shared Object) halinde httpd
programından ayrı
+ olarak da derlenebilir. DSO modülleri sunucunun derlenmesi sırasında
+ derlenebileceği gibi ayrı olarak derlenip daha sonra Apache Eklenti
+ Aracı (Apache Extension Tool) apxs
programı
+ kullanılarak sunucuya eklenebilir.Gerçeklenim
+
+
+
+ İlgili Modüller İlgili Yönergeler mod_so
+ adında bir modül tarafından sağlanır. core
modülünden
+ başka, bir DSO modülü olamayan tek modül mod_so
+ modülüdür. Hemen hemen tüm diğer Apache modülleri kurulum belgesinde de açıklandığı gibi
+ configure
betiğinin
+ --enable-modül=shared
seçeneği her modül için ayrı
+ ayrı belirtilerek birer DSO modülü olarak derlenebilir. Derlenmiş
+ modüller mod_filanca.so
biçeminde birer DSO ismi alırlar ve
+ her biri istenirse httpd.conf
dosyasında
+ mod_so
modülünün LoadModule
yönergesiyle belirtilerek sunucu başlatılırken
+ veya yeniden başlatılırken sunucuya yüklenebilir.apxs
+ (APache eXtenSion) adında yeni bir destek programı
+ kullanılmaktadır. Bu program Apache modüllerini Apache kaynak ağacından
+ ayrı olarak derlemek için kullanılabilir. Fikir basittir: Apache
+ derlenirken DSO dosyalarını derlemek için platforma bağımlı
+ derleyici ve ilintileyici seçenekleri apxs
+ programının içine konur ve Apache’nin make install
ile
+ kurulumu sırasında Apache C başlık dosyaları da kurulur. Böylece
+ kullanıcı Apache dağıtımının kaynak ağacına ihtiyaç duymadan ve
+ platforma bağımlı derleyici ve ilintileyici seçeneklerini bilmek zorunda
+ kalmadan istediği Apache modülünü apxs
programını
+ kullanarak derleyebilir.Kullanıcı Özeti
+
+
+
+
+ mod_filanca.c
dosyasında dağıtılan bir
+ özgün Apache modülünü mod_filanca.so
isminde bir
+ DSO modülü olarak derlemek ve kurmak için şöyle yapılır:
+
+
+ $ ./configure --prefix=/kurulum/yeri --enable-filanca=shared
+ $ make install
+mod_filanca.c
dosyasında dağıtılan bir
+ üçüncü parti Apache modülünü mod_filanca.so
+ isminde bir DSO modülü olarak derlemek ve kurmak için şöyle yapılır:
+
+
+$ ./configure --add-module=modül-türü:/bir/kurulum/yeri/mod_filanca.c \
+
+ --enable-filanca=shared
+
+$ make install
+
+$ ./configure --enable-so
+$ make install
+mod_filanca.c
dosyasında dağıtılan bir
+ üçüncü parti Apache modülü mod_filanca.so
+ isminde bir DSO modülü olarak Apache kaynak ağacının dışında
+ apxs
kullanarak derlemek ve kurmak için şöyle
+ yapılır:
+
+
+$ cd /bir/kurulum/yeri
+$ apxs -c mod_filanca.c
+$ apxs -i -a -n filanca mod_filanca.la
+httpd.conf
dosyasında o modül için bir LoadModule
yönergesi bulunmalıdır.Artalan Bilgisi
+
+ ld.so
adlı bir
+ sistem programınının devingen olarak yüklenmesi ile ya da
+ çalıştırılabilir programın içinden Unix yükleyicisine programsal sistem
+ arayüzü sağlayan dlopen()/dlsym()
sistem çağrılarının elle
+ yapılması suretiyle.libfilanca.so
veya
+ libfilanca.so.1.2
biçiminde isimlendirilir. Belli bir
+ sistem dizininde (normalde /usr/lib
) bulunurlar ve derleme
+ sırasında ilintileyici komutuna -lfilanca
şeklinde
+ belirtilerek çalıştırılabilir programla ilintilenirler. Doğrudan
+ çalıştırılabilir koda eklenen bu kodlar Unix yükleyicisinin programın
+ başlatılması sırasında kütüphaneyi /usr/lib
altında
+ libfilanca.so
adıyla bulabilmesini sağlar. Kütüphanelerin
+ aranacağı yerler ya -R
gibi bir ilintileyici seçeneği ile
+ koda eklenir ya da arama yolları LD_LIBRARY_PATH
ortam
+ değişkeni aracılığıyla yapılandırılır. Böylece çalıştırılabilir
+ programda henüz çözümlenmemiş simgeler DSO içinde bulunarak
+ çözümlenebilir.ld.so
) sorumludur. (Aslında, ld.so
’yu
+ çağıracak kod, her çalıştırılabilir programın içine ilintilenmiş
+ (durağan değil) başlatma kodunun bir parçasıdır.) Programlar tarafından
+ ortaklaşa kullanılan kütüphanelerin devingen olarak yüklenmesinin sebebi
+ basittir: Kütüphane kodu libc.so
gibi bir sistem
+ kütüphanesine bir kere kaydedilip disk alanından yer kazanılmış
+ olur.filanca.so
gibi
+ isimlendirilse de genelde keyfi olarak seçilen bir dosya uzantısı
+ kullanılarak isimlendirilirler. Bu dosyalar genellikle programa özel bir
+ dizinde dururlar ve bu dosyaları kullanacak olan çalıştırılabilir
+ programla aralarında özdevimli olarak bağ kurulmamıştır. Bunun yerine,
+ çalıştırılabilir program DSO’yu çalışma anında dlopen()
+ sayesinde kendi adres uzayına ekler. Çalıştırılabilir program için
+ DSO’daki simgeler bu sırada çözümlenmez. Özdevimli olarak devreye
+ giren Unix yükleyicisi, (varsa) artakalan simgeleri, çalıştırılabilir
+ ihraç edilen simge kümelerini (ve özellikle her yerde hazır ve nazır
+ libc.so
içindeki tüm simgeleri) kullanarak çözümler. Bu
+ yolla DSO, çalıştırılabilir programın simge kümesi bilgilerini sanki
+ kendisine baştan durağan olarak ilintilenmiş gibi ulaşabilir.dlsym()
üzerinden DSO’daki belli
+ simgeleri çözümlemek zorundadır. Başka bir deyişle: Çalıştırılabilir
+ program ihtiyaç duyduğu her simgeyi kullanmak için kendisi çözümleme
+ yapmak zorundadır. Böyle bir mekanizmanın getirisi, programın isteğe
+ bağlı parçalarının gerekli olana kadar yüklenmemesidir (böylece daha az
+ bellek alanı kullanılır). Gerektiği zaman programın işlevselliğini
+ arttırmak amacıyla bu parçalar devingen olarak programa
+ yüklenebilir.Getiriler ve Götürüler
+
+
+
+
+ configure
+ seçenekleriyle birleştirilmek yerine httpd.conf
içinde
+ LoadModule
yönergeleri
+ sayesinde çalışma anında birleştirilebilmektedir. Bu yolla, örneğin
+ tek bir Apache kurulumuyla birbirinden farklı yapılandırmalara sahip
+ çok sayıda sunucu çalıştırmak mümkündür. (standart veya SSL sürümü;
+ basitleştirilmiş veya güçlendirilmiş sürümü [mod_perl, PHP3],
+ vs.)apxs
çifti sayesinde
+ Apache kaynak ağacının dışında derleyip modülün yeni bir sürümünü bir
+ apxs -i
komutunun ardından apachectl
+ restart
yaparak çalışan bir Apache sunucusunda denemek daha
+ kolay hale getirilmiştir.
+
+
+ld -lfilanca
) DSO mekanizmasını tüm modül türleri için
+ kullanamazsınız (örneğin a.out temelli platformlar bu işlevselliği
+ ELF temelli platformlar kadar iyi sağlamaz). Başka bir deyişle, DSO
+ dosyaları olarak derlenmiş modüllerin kullanabileceği simgeler ya
+ Apache temel kodunda vardır ya Apache temel kodunun kullandığı C
+ kütüphanesinde (libc
) ve diğer durağan ve devingen
+ kütüphanelerde vardır ya da konumdan bağımsız kodu içeren
+ durağan kütüphane arşivlerinde (libfilanca.a
)
+ vardır. Diğer modülleri kullanmak için tek şansınız ya Apache
+ çekirdeğinin modüle bir atıf içermesini sağlamak ya da modül kodunu
+ dlopen()
vasıtasıyla yüklemektir.mod_setenvif
allow environment variables to be set
+ on a per-request basis, conditional on characteristics of particular
requests. For example, a variable could be set only when a
specific browser (User-Agent) is making a request, or only when
a specific Referer [sic] header is found. Even more flexibility
- is available through the mod_rewrite's RewriteRule
which uses the
+ is available through the mod_rewrite
's RewriteRule
which uses the
[E=...]
option to set environment variables.Unique Identifiers
- UNIQUE_ID
for each request to a value which is
+ mod_unique_id
sets the environment
+ variable UNIQUE_ID
for each request to a value which is
guaranteed to be unique across "all" requests under very
specific conditions.SetEnv
directive runs
late during request processing meaning that directives such as
SetEnvIf
and RewriteCond
will not see the
@@ -143,7 +144,8 @@
SSI Pages
- mod_include
's
INCLUDES
filter can print environment variables
using the echo
element, and can use environment
variables in flow control elements to makes parts of a page
@@ -158,9 +160,9 @@
allow from env=
and deny from env=
directives. In combination with
- SetEnvIf
, this
- allows for flexible control of access to the server based on
- characteristics of the client. For example, you can use these
+ SetEnvIf
, this
+ allows for flexible control of access to the server based on
+ characteristics of the client. For example, you can use these
directives to deny access to a particular browser (User-Agent).
LogFormat
option %e
. In addition, the decision on whether
- or not to log requests can be made based on the status of
- environment variables using the conditional form of the
+ or not to log requests can be made based on the status of
+ environment variables using the conditional form of the
CustomLog
- directive. In combination with SetEnvIf
this allows for flexible control of which
- requests are logged. For example, you can choose not to log
+ directive. In combination with SetEnvIf
this allows for flexible control of which
+ requests are logged. For example, you can choose not to log
requests for filenames ending in gif
, or you can
choose to only log requests from clients which are outside your
subnet.URL Rewriting
- %{ENV:...}
form of TestString in
- the RewriteCond
- allows mod_rewrite's rewrite
- engine to make decisions conditional on environment variables.
- Note that the variables accessible in mod_rewrite without the
- ENV:
prefix are not actually environment
- variables. Rather, they are variables special to mod_rewrite
+ %{ENV:variable}
form of
+ TestString in the RewriteCond
allows mod_rewrite
's rewrite
+ engine to make decisions conditional on environment variables. Note
+ that the variables accessible in mod_rewrite
without
+ the ENV:
prefix are not actually environment variables.
+ Rather, they are variables special to mod_rewrite
which cannot be accessed from other modules.gzip-only-text/html
- mod_deflate
for
- content-types other than text/html
. If you'd rather
+ DEFLATE
output filter provided by
+ mod_deflate
for content-types other than
+ text/html
. If you'd rather
use statically compressed files, mod_negotiation
evaluates the variable as well (not only for gzip, but for all
encodings that differ from "identity").
However, if the redirection is to a page that uses a different character set, some broken browser versions will try to use the character set from the redirection text rather than the actual page. This can result in Greek, for instance, being incorrectly rendered.
+Setting this environment variable causes Apache to omit the character set for the redirection text, and these broken browsers will then correctly use that of the destination page.
Sending error pages without a specified character set may allow a cross-site-scripting attack for existing browsers (MSIE) @@ -392,11 +396,13 @@ access log. It can be easily modified to prevent logging of particular directories, or to prevent logging of requests coming from particular hosts.
--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
+ 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
+
-SetEnvIf Referer "^http://www\.example\.com/" local_referal -# Allow browsers that do not send Referer info -SetEnvIf Referer "^$" local_referal -<Directory /web/images> - Order Deny,Allow - Deny from all - Allow from env=local_referal -</Directory>
+ SetEnvIf Referer "^http://www\.example\.com/" local_referal
+ # Allow browsers that do not send Referer info
+ SetEnvIf Referer "^$" local_referal
+ <Directory /web/images>
+
+ Order Deny,Allow
+ Deny from all
+ Allow from env=local_referal
+
+ </Directory>
+
For more information about this technique, see the - "Keeping Your Images from Adorning Other Sites" tutorial on ServerWatch.
+ "Keeping Your Images from Adorning Other Sites" tutorial on + ServerWatch.Apache HTTP Sunucusu Sürüm 2.2
+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.
+İlgili Modüller | İlgili Yönergeler |
---|---|
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.
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.
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.
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
+ kullanıldığında ortam, CGI betikleri çalıştırılmadan önce
+ güvenilir değişkenler kalacak şekilde temizlenir.
+ Güvenilir değişken listesi suexec.c
içinde
+ derleme sırasında tanımlanır.SetEnv
yönergesi geç çalıştırılır,
+ yani SetEnvIf
ve
+ RewriteCond
gibi
+ yönergeler SetEnv
ile
+ atanan değişken değerlerini görmezler.İlgili Modüller | İlgili Yönergeler |
---|---|
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 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.
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.
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.
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.
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.
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.
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.
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.
+ +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
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
belgesine bakınız.
Ö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.
+ +
+ 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
+
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://filan\.fesmekan\.dom/" local_referal
+ # Referrer bilgisi göndermeyen tarayıcılara izin verelim
+ SetEnvIf Referer "^$" local_referal
+ <Directory /siteler/resimler>
+
+ Order Deny,Allow
+ Deny from all
+ Allow from 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.
+ +