Apache HTTP Sunucusu Sürüm 2.4

Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4 > Sanal Konaklar

# IP’ye Dayalı Sanal Konak Desteği

### Ayrıca bakınız:

- İsme Dayalı Sanal Konak Desteği

## IP'ye dayalı sanal konak desteği nedir

IP'ye dayalı sanal konak desteği, bir isteğin alındığı IP adresi ve porta bağlı olarak farklı yönergeleri uygulamak için bir yoldur. Özetle, farklı siteleri farklı portlardan ve arayüzlerden sunmakta kullanılır.

Çoğu durumda, isme dayalı sanal konaklar birçok sanal konağın tek bir IP adresi/port çiftini paylaşmasını sağladığından daha kullanışlıdır. Neyi kullanacağınıza karar vermek için İsme dayalı ve IP’ye dayalı Sanal Konaklar bölümüne bakınız.

## Sistem gereksinimleri

IP’ye dayalı deyince, sunucunun her IP’ye dayalı sanal konak için ayrı bir IP adresi/port çiftine sahip olduğunu anlıyoruz. Bunun olması için, makine ya çok sayıda ağ bağlantısına sahiptir ya da makinede, günümüzde çoğu işletim sistemi tarafından desteklenen sanal arabirimler ve/veya çok sayıda port kullanılıyordur. (Sanal arabirimlerle ilgili ayrıntılar için sistem belgelerinize bakınız; bu konu genellikle IP rumuzları (ip aliases) olarak geçer ve ayarlamak için genellikle "ifconfig" komutu kullanılır.)

Apache HTTP Sunucusu terminolojisinde, tek bir IP adresinin çok sayıda TCP portuyla kullanımı IP'ye dayalı sanal konak desteği olarak bilinir.

## Apache nasıl ayarlanır?

Çok sayıda konağı desteklemek üzere Apache iki şekilde yapılandırılabilir. Ya her konak için ayrı bir `httpd` süreci çalıştırırsınız ya da tüm sanal konakları destekleyen tek bir süreciniz olur.

Çok sayıda süreç kullanıyorsanız:

- Güvenli bölgeler oluşturmanız gerekiyordur. Örneğin, şirket2’deki hiç kimse dosya sistemi üzerinden şirket1’e ait verileri okuyamasın, sadece herkes gibi tarayıcı kullanarak okuyabilsin istenebilir. Bu durumda, `User`, `Group`, `Listen` ve `ServerRoot` yönergeleri farklı değerlerle yapılandırılmış iki ayrı süreç çalıştırmanız gerekir.
- Makine üzerindeki her IP adresini dinlemek için gereken dosya tanıtıcı ve bellek miktarını makul bir seviyede tutabilirsiniz. Bu sadece belli adresleri dinleyerek veya çok sayıda adresle eşleşen adres kalıpları kullanarak mümükün olabilir. Zaten, bir sebeple belli bir adresi dinleme ihtiyacı duyarsanız, diğer tüm adresleri de ayrı ayrı dinlemeniz gerekir. (Bir `httpd` programı N-1 adresi dinlerken diğerleri kalan adresleri dinleyebilir.)

Tek bir süreç kullanıyorsanız:

- `httpd` yapılandırmasının sanal konaklar arasında paylaşılmasına izin veriliyor demektir.
- Makine çok büyük miktarda isteği karşılayabilir ve ayrı ayrı süreçlerin çalışmasından kaynaklanan önemli başarım kayıpları yaşanmaz.

## Çok sayıda sürecin yapılandırılması

Her sanal konak için ayrı bir `httpd` yapılandırması oluşturulur. Her yapılandırmada, o süreç tarafından sunulacak IP adresi (veya sanal konak) için `Listen` yönergesi kullanılır. Örnek:

    Listen 192.0.2.100:80

Burada konak ismi yerine IP adresi kullanmanız önerilir (ayrıntılar için DNS ile ilgili konular belgesine bakınız).

## Sanal konaklar tek bir sürecin yapılandırılması

Bu durum için, ana sunucu ve sanal konakların tümüne gelen istekler tek bir `httpd` süreci tarafından karşılanır. Yapılandırma dosyasında, her sanal konak için, farklı değerlere sahip `ServerAdmin`, `ServerName`, `DocumentRoot`, `ErrorLog`ve`TransferLog` veya `CustomLog` yönergeleri içeren ayrı birer `VirtualHost` bölümü oluşturulur. Örnek:

    <VirtualHost 192.168.1.10:80>
        ServerAdmin bilgi@example.com
        DocumentRoot "/siteler/belgeler/ecom"
        ServerName example.com
        ErrorLog "/siteler/gunlukler/ecom/hatalar.log"
        CustomLog "/siteler/gunlukler/ecom/erisim.log" combined
    </VirtualHost>

    <VirtualHost 192.168.1.20:80>
        ServerAdmin bilgi@example.org
        DocumentRoot "/siteler/belgeler/eorg"
        ServerName example.org
        ErrorLog "/siteler/gunlukler/eorg/hatalar.log"
        CustomLog "/siteler/gunlukler/eorg/erisim.log" combined
    </VirtualHost>

<VirtualHost> yönergesinde konak ismi yerine IP adresi kullanmanız önerilir (ayrıntılar için DNS ile ilgili konular belgesine bakınız).

Belli bir IP adresi veya port kullanımı bunların joker eşdeğerlerine göre daha yüksek öncelik sağlar ve eşleşen bir sanal konak da genel sunucuya göre öncelik alır.

Süreç oluşturmayı denetleyen yönergeler ve bir kaç başka yönerge dışında hemen hemen tüm yapılandırma yönergeleri `VirtualHost` bölümleri içinde kullanılabilir. Bir yönergenin `VirtualHost` bölümlerinde kullanılıp kullanılmayacağını öğrenmek için yönerge dizinini kullanarak yönergenin Bağlam’ına bakınız.

suEXEC sarmalayıcısı kullanıldığı takdirde `SuexecUserGroup` yönergesi de bir `VirtualHost` bölümü içinde kullanılabilir.

GÜVENLİK:Günlük dosyalarının yazılacağı yeri belirlerken, Apache’yi başlatan kullanıcıdan başka kimsenin yazamayacağı bir yerin seçilmesi bazı güvenlik risklerini ortadan kaldırmak bakımından önemlidir. Ayrıntılar için güvenlik ipuçları belgesine bakınız.