mirror of
https://github.com/apache/httpd.git
synced 2025-11-05 05:30:39 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1178089 13f79535-47bb-0310-9956-ffa450edef68
280 lines
14 KiB
XML
280 lines
14 KiB
XML
<?xml version='1.0' encoding='UTF-8' ?>
|
||
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
|
||
<?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
|
||
<!-- English Revision: 659902:1174747 (outdated) -->
|
||
<!-- =====================================================
|
||
Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
|
||
Reviewed by: Orhan Berent <berent belgeler.org>
|
||
========================================================== -->
|
||
|
||
<!--
|
||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||
contributor license agreements. See the NOTICE file distributed with
|
||
this work for additional information regarding copyright ownership.
|
||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||
(the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
-->
|
||
|
||
<manualpage metafile="name-based.xml.meta">
|
||
<parentdocument href="./">Sanal Konaklar</parentdocument>
|
||
<title>İsme Dayalı Sanal Konaklar</title>
|
||
|
||
<summary>
|
||
<p>Bu belgede isme dayalı sanal konakların ne zaman, nasıl kullanılacakları
|
||
açıklanmıştır.</p>
|
||
</summary>
|
||
|
||
<seealso><a href="ip-based.html">IP Adresine Dayalı Sanal Konaklar</a></seealso>
|
||
<seealso><a href="details.html">Konak Eşlemenin Derinliğine İncelenmesi</a>
|
||
</seealso>
|
||
<seealso><a href="mass.html">Devingen olarak Yapılandırılan Kütlesel Sanal
|
||
Barındırma</a></seealso>
|
||
<seealso><a href="examples.html">Çok kullanılan sanal konak yapılandırma
|
||
örnekleri</a></seealso>
|
||
<seealso><a href="examples.html#serverpath">ServerPath yapılandırma örneği</a>
|
||
</seealso>
|
||
|
||
<section id="namevip"><title>İsme dayalı ve IP’ye dayalı Sanal Konaklar</title>
|
||
|
||
<p>IP’ye dayalı sanal konaklarda sunulacak sanal konağı doğru tespit
|
||
edebilmek için bağlantının yapıldığı IP adresine bakılır. Bu bakımdan her
|
||
konak için ayrı bir IP adresine gereksinim vardır. İsme dayalı sanal
|
||
konaklarda ise sunucu, istemcinin HTTP başlığının bir parçası olarak
|
||
gönderdiği konak adını kullanır. Bu teknikte aynı IP adresini çok sayıda
|
||
farklı konak kullanabilir.</p>
|
||
|
||
<p>İsme dayalı sanal barındırma nispeten daha kolaydır, çünkü her konak
|
||
ismini doğru IP adresiyle eşlemek için DNS sunucunuzu yapılandırdıktan
|
||
sonra Apache HTTP sunucusunu farklı konak isimlerini tanıyacak şekilde
|
||
yapılandırmanız yeterli olur. İsme dayalı sanal barındırma ayrıca zaten
|
||
kıt olan IP adreslerine talebi de azaltır. Bu nedenle, IP’ye dayalı sanal
|
||
konakları kullanmanızı gerektirecek çok özel bir sebep olmadıkça isme
|
||
dayalı sanal konaklar kullanmalısınız. IP’ye dayalı sanal konakların
|
||
kullanımını gerektirebilecek bazı durumlar:</p>
|
||
|
||
<ul>
|
||
<li>Bazı tarihi istemciler isme dayalı sanal konaklarla uyumlu değildir.
|
||
İsme dayalı sanal konakların çalışması için istemcinin HTTP Host
|
||
başlığı göndermesi gerekir. Bu da HTTP/1.1 desteği gerektirir.
|
||
Günümüzdeki HTTP/1.0 istemcileri bir eklenti olarak HTTP/1.1’i de
|
||
desteklemektedir. Tarihi eser haline gelmiş HTTP/1.1 desteği
|
||
bulurmayan eski istemcileri hala isme dayalı sanal konaklarla
|
||
desteklemek isterseniz bu belgenin sonunda bunu mümkün kılabilecek bir
|
||
tekniğe yer verilmiştir.</li>
|
||
|
||
<li>İsme dayalı sanal konaklar SSL portokolünün doğası gereğince SSL’li
|
||
güvenli sunucular için kullanılamazlar.</li>
|
||
|
||
<li>Bazı işletim sistemlerinin ve ağ donanımlarının gerçekleştirdiği
|
||
band genişliği yönetim teknikleri IP adresleri farklı olmadığı sürece
|
||
konaklar arasında ayrım yapamazlar.</li>
|
||
</ul>
|
||
|
||
</section>
|
||
|
||
<section id="using"><title>İsme Dayalı Sanal Konakların Kullanımı</title>
|
||
|
||
<related>
|
||
<modulelist>
|
||
<module>core</module>
|
||
</modulelist>
|
||
|
||
<directivelist>
|
||
<directive module="core">DocumentRoot</directive>
|
||
<directive module="core">NameVirtualHost</directive>
|
||
<directive module="core">ServerAlias</directive>
|
||
<directive module="core">ServerName</directive>
|
||
<directive module="core">ServerPath</directive>
|
||
<directive module="core" type="section">VirtualHost</directive>
|
||
</directivelist>
|
||
</related>
|
||
|
||
<p>İsme dayalı sanal konakları kullanmak için, bu konaklar için istekleri
|
||
kabul edecek sunucuya IP adresini (ve muhtemelen portu da)
|
||
belirtmelisiniz. Bu işlem <directive
|
||
module="core">NameVirtualHost</directive> yönergesiyle yapılır. Normal
|
||
şartlar altında sunucu üzerinde bütün IP adreslerinin kullanılması
|
||
gerekir; bunun için <directive module="core">NameVirtualHost</directive>
|
||
yönergesine argüman olarak <code>*</code> belirtebilirsiniz. Çok sayıda
|
||
port kullanmayı planlıyorsanız (SSL çalıştırmak gibi), argümana
|
||
<code>*:80</code> şeklinde port ekleyebilirsiniz. Yalnız, <directive
|
||
module="core">NameVirtualHost</directive> yönergesinde bir IP adresi
|
||
belirtmiş olmakla sunucunun kendiliğinden o IP adresini dinlemeyeceğine
|
||
dikkat ediniz. Bu konuda ayrıntılı bilgi edinmek için <a
|
||
href="../bind.html">Apache’nin kullanacağı adreslerin ve portların
|
||
ayarlanması</a> belgesine bakınız. Ayrıca, sunucuda, burada belirttiğiniz
|
||
IP adresine sahip bir ağ arabirimi olmalıdır.</p>
|
||
|
||
<p>Sonraki adım sunacağınız her konak için ayrı bir <directive
|
||
type="section" module="core">VirtualHost</directive> bölümü oluşturmaktır.
|
||
<directive type="section" module="core">VirtualHost</directive>
|
||
yönergesinin argümanı ile eşleşen bir <directive
|
||
module="core">NameVirtualHost</directive> yönergesi tanımlanmış olmalıdır
|
||
(değer normalde "*:80" olacaktır). Her <directive type="section"
|
||
module="core">VirtualHost</directive> bölümü içinde sunulan konağı
|
||
belirtmek üzere en azından bir adet <directive
|
||
module="core">ServerName</directive> yönergesine ve konak içeriğinin dosya
|
||
sisteminde bulunduğu yeri gösteren bir <directive
|
||
module="core">DocumentRoot</directive> yönergesine
|
||
ihtiyacınız olacaktır.</p>
|
||
|
||
<note><title>Ana konağı unutmayın</title>
|
||
<p>Mevcut sitenize sanal konaklar eklerseniz, mevcut siteniz için de bir
|
||
<directive type="section" module="core">VirtualHost</directive> bölümü
|
||
oluşturmalısınız. Bu sanal konak bölümü içinde kullanacağınız
|
||
<directive module="core">ServerName</directive> ve <directive
|
||
module="core">DocumentRoot</directive> yönergelerinin argümanları, bu
|
||
yönergelerin sunucu geneli için belirttiğiniz değerlerini
|
||
içermelidir. Bu sanal konağı yapılandırma dosyanızdaki ilk sanal konak
|
||
yapın ki, öntanımlı konak olsun.</p>
|
||
</note>
|
||
|
||
<p>Örnek olarak, <code>www.biralan.tld</code> adresinden sitenizi sunmakta
|
||
olduğunuzu ve bunun yanına aynı IP adresini kullanan
|
||
<code>www.digeralan.tld</code> sanal konağını eklemek istediğinizi
|
||
varsayalım. Bunun için <code>httpd.conf</code> dosyanıza basitçe şu
|
||
satırları ekleyebilirsiniz:</p>
|
||
|
||
<example>
|
||
NameVirtualHost *:80<br />
|
||
<br />
|
||
<VirtualHost *:80><br />
|
||
<indent>
|
||
ServerName www.biralan.tld<br />
|
||
ServerAlias biralan.tld *.biralan.tld<br />
|
||
DocumentRoot /siteler/biralan<br />
|
||
</indent>
|
||
</VirtualHost><br />
|
||
<br />
|
||
<VirtualHost *:80><br />
|
||
<indent>ServerName www.digeralan.tld<br />
|
||
DocumentRoot /siteler/digeralan<br />
|
||
</indent>
|
||
</VirtualHost><br />
|
||
</example>
|
||
|
||
<p>İsterseniz, <directive module="core">NameVirtualHost</directive> ve
|
||
<directive type="section" module="core">VirtualHost</directive>
|
||
yönergelerinde argüman olarak <code>*</code> yerine doğrudan bir IP adresi
|
||
belirtebilirsiniz. Hatta, daha sonra, isme dayalı sanal konakları bir IP
|
||
adresinden ve IP’ye dayalı olanları veya isme dayalı diğer bir sanal konak
|
||
grubunu diğer IP adreslerinden sunmak isteyebilirsiniz.</p>
|
||
|
||
<p>Çoğu sunucunun birden fazla isim ile erişilebilir olması istenir. Bu,
|
||
<directive type="section" module="core">VirtualHost</directive> bölümü
|
||
içine bir <directive module="core">ServerAlias</directive> yönergesi
|
||
yerleştirmek suretiyle mümkün olur. Örneğin yukarıdaki örnekte,
|
||
kullanıcıların aynı siteye farklı isimlerle erişmelerini mümkün kılmak
|
||
için bölüm içine şu satırı ekleyebilirsiniz:</p>
|
||
|
||
<example>
|
||
ServerAlias biralan.tld *.biralan.tld
|
||
</example>
|
||
|
||
<p>Böylece <code>biralan.tld</code> alanındaki tüm konaklar için gelen
|
||
isteklere <code>www.biralan.tld</code> sanal konağından hizmet sunulmuş
|
||
olur. Konak isimleriyle eşleşmek üzere dosya ismi kalıp karakterleri
|
||
<code>*</code> ve <code>?</code> kullanılabilir. Şüphesiz bu isimleri sırf
|
||
<directive module="core">ServerName</directive> veya
|
||
<code>ServerAlias</code> yönergesinde belirtmiş olmakla bu isimleri
|
||
erişilebilir kılamazsınız. Öncelikle, bu isimleri sunucunuzdaki IP
|
||
adresleriyle eşlemek üzere yapılandıracağınız bir DNS sunucunuz
|
||
olmalıdır.</p>
|
||
|
||
<p>Son olarak, sanal konak yapılandırmanıza, <directive type="section"
|
||
module="core">VirtualHost</directive> bölümlerinin içine başka yönergeler
|
||
yerleştirerek ince ayar çekebilirsiniz. Çoğu yönerge bu bölümlere
|
||
yerleştirilebilir ve sadece o sanal konakla ilgili yapılandırmayı
|
||
değiştirmek için kullanılabilir. Belli bir yönergenin sanal konak
|
||
bölümlerinde kullanılıp kullanılmayacağını yönergenin açıklamasında <a
|
||
href="../mod/directive-dict.html#Context">Bağlam</a> satırına bakarak
|
||
öğrenebilirsiniz. <em>Ana sunucu bağlamındaki</em> (<directive
|
||
type="section" module="core">VirtualHost</directive> bölümleri dışındaki)
|
||
yapılandırma yönergelerinden sadece sanal konak bölümlerinde geçersiz
|
||
kılınmamış olanlar kullanılacaktır.</p>
|
||
|
||
<p>Sunucuya bir istek geldiğinde, sunucu önce IP adresiyle eşleşmesi olası
|
||
<directive module="core">NameVirtualHost</directive> bölümleri var mı diye
|
||
bakar. Varsa, IP adresini eşleştirmek için <directive
|
||
module="core">NameVirtualHost</directive> bölümlerine tek tek bakar ve
|
||
istenen konak ismi ile eşleşen bir <directive module="core"
|
||
>ServerName</directive> veya <code>ServerAlias</code> yönergesi bulmaya
|
||
çalışır. Bir tane bulduğunda, sunucu için onun yapılandırmasını kullanır.
|
||
İsimle eşleşen bir sanal konak bulamazsa IP adresiyle eşleşen <strong>ilk
|
||
sanal konağın</strong> yapılandırmasını kullanır.</p>
|
||
|
||
<p>Bir önkabul olarak yapılandırma dosyasında rastlanan ilk sanal konak
|
||
<em>öntanımlı</em> sanal konaktır. IP adresi bir sanal konakla eşleştiği
|
||
takdirde <em>ana sunucunun</em> <directive module="core"
|
||
>DocumentRoot</directive> değeri <strong>asla</strong> kullanılmayacaktır.
|
||
Sanal konaklardan hiçbiriyle eşleşmeyen istekler için özel bir
|
||
yapılandırmanız olsun isterseniz, bu yapılandırmayı yapılandırma
|
||
dosyanızdaki ilk <directive type="section"
|
||
module="core">VirtualHost</directive> bölümüne yerleştirmeniz
|
||
yetecektir.</p>
|
||
|
||
</section>
|
||
|
||
<section id="compat"><title>Artık Tarihe Karışmış Tarayıcılarla Uyumluluk</title>
|
||
|
||
<p>Evvelce de bahsedildiği gibi, isme dayalı sanal konakların gerektiği gibi
|
||
çalışması için gerekli veriyi göndermeyen bazı istemciler vardır. Bu
|
||
istemcilere daima o IP adresinin yapılandırma dosyasındaki ilk sanal
|
||
konağının (isme dayalı <cite>başat</cite> sanal konak) sayfaları
|
||
gönderilir.</p>
|
||
|
||
<note><title>Ne kadar eski?</title>
|
||
<p>Lütfen dikkat edin, eski deyince gerçekten de antika demek istiyoruz.
|
||
Günümüzde bu tür tarayıcılara rastlamanız neredeyse imkansızdır. Günümüz
|
||
tarayıcılarının hepsi isme dayalı sanal konakların gerektirdiği
|
||
<code>Host</code> başlığını gönderirler.</p>
|
||
</note>
|
||
|
||
<p>Olayı fazla germeden <directive module="core">ServerPath</directive>
|
||
yönergesini kullanarak sorunun çevresinden dolanmak mümkündür:</p>
|
||
|
||
<p>Örnek yapılandırma:</p>
|
||
|
||
<example>
|
||
NameVirtualHost 111.22.33.44<br />
|
||
<br />
|
||
<VirtualHost 111.22.33.44><br />
|
||
<indent>
|
||
ServerName www.biralan.tld<br />
|
||
ServerPath /biralan<br />
|
||
DocumentRoot /siteler/biralan<br />
|
||
</indent>
|
||
</VirtualHost><br />
|
||
</example>
|
||
|
||
<p>Bu ne anlama geliyor? Anlamı, "<code>/biralan</code>" ile başlayan her
|
||
URI isteği <code>www.biralan.tld</code> sanal konağı tarafından sunulacak,
|
||
demektir. Yani, tüm istemcilerin
|
||
<code>http://www.biralan.tld/biralan/</code> olarak eriştiği yere
|
||
<code>Host:</code> başlığı gönderen istemciler
|
||
<code>http://www.biralan.tld/</code> olarak erişirler.</p>
|
||
|
||
<p>Bunu gerçekleştirebilmek için başat sanal konağın baş sayfasına
|
||
<code>http://www.biralan.tld/biralan/</code> için bir bağ koyduktan sonra
|
||
sanal konağın sayfalarında ya tamamen göreli bağlar
|
||
("<code>dosya.html</code>", "<code>../simgeler/resim.png</code>" gibi)
|
||
veya <code>/biralan/</code> ile öncelenmiş bağlar
|
||
("<code>http://www.biralan.tld/biralan/muht/dosya.html</code>" veya
|
||
"<code>/biralan/muht/dosya.html</code>" gibi) kullanın.</p>
|
||
|
||
<p>Bu işlem biraz disiplin gerektirse de bu yazılanlara sıkı sıkıya bağlı
|
||
kalarak hem eski hem de yeni tarayıcıların sayfalarınızı doğru
|
||
görüntülemesini sağlamış olursunuz.</p>
|
||
|
||
</section>
|
||
</manualpage>
|