Apache Dizini yönergesinin DocumentRoot ile ilgili olması mı gerekiyor?


14

Apache Directoryyönergesinin DocumentRoot ile ilgili olması mı gerekiyor? Bir VirtualHost bağlamında soruyorum, ancak herhangi bir fark yaratmamalıdır.

Başka bir deyişle, olması gerekiyor mu:

<VirtualHost>
    DocumentRoot /var/www
    <Directory /var/www>
    ...

veya

<VirtualHost>
    DocumentRoot /var/www
    <Directory />
    ...

Her ikisi de çalışır. Apache Directory dokümanlar ki:

Dizin yolu, bir dizinin tam yoludur veya bir joker karakter dizesidir ...

... ama sonra "tam yol" ifadesiyle çelişen iki örnek gösteriyorlar.

ED: üzerine çelişkili örnekler de vardır Apache Performans Ayarlama sayfa içinde FollowSymLinks ve SymLinksIfOwnerMatch ve AllowOverride bölümleri.

Eğlence için Debian'ın varsayılan vhost kurulumuna baktım ve şunu buldum:

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ...

Yanıtlar:


9

Dokümantasyon doğrudur ve <Directory>direktif tam yol olmalıdır .

İlk örneğiniz, VirtualHosts yönergesini nasıl yapılandırmanız gerektiğidir ve yönerge içindeki seçenekleri yalnızca DocumentRoot. İkinci örneğiniz, dosya sistemi köküne (kelimenin tam anlamıyla /) atıfta bulunmaktır .

Direktifin geri kalanını yayınlamadınız, ancak bu genellikle Apache'yi hapse atmanın ve erişimini kısıtlamanın bir yolu olarak kullanılır ve genellikle ( apache2.confveya her zaman değil) ana veya httpd.confyapılandırma dosyalarının içine yerleştirilir , VirtualHost'larınız açıkça izin verir kendi DocumentRootdizinleri için erişim , bu nedenle ikisi genellikle birlikte kullanılır.

Gönderen Apache belgelerinde :

<Dizin /> için varsayılan erişimin tüm erişime izin vermek olduğunu unutmayın. Bu, Apache httpd'nin bir URL'den eşlenen tüm dosyaları sunacağı anlamına gelir. Bunu aşağıdaki gibi bir blokla değiştirmeniz önerilir:
    <Dizin />
      Reddedilenlerin tümünü iste
    </ Directory>
ve sonra erişilebilir olmasını istediğiniz dizinler için bunu geçersiz kılın. Daha fazla ayrıntı için Güvenlik İpuçları sayfasına bakın.

İkinci örnek tam anlamıyla dosya sistemine atıfta bulunuyorsa, /neden Apache /var/wwwdizine hizmet veriyor ?
Jeff

1
Apache hizmet verecek DocumentRoot. DirectoryDirektifi tamamen ayrıdır ve "bu dizine ve tüm alt dizinlere kapalı yapılandırma uygulamak" diyerek etkisine sahiptir. Daha spesifik yapılandırmalar önceliklidir, bu nedenle <Directory /var/www/>geçersiz kılınır <Directory />.
Craig Watson

Anlıyorum. Yani <Directory />bir VirtualHost bağlamından, sunucu genelindeki seçenekleri (veya diğer ayarları) geçersiz kılabilir <Directory />? Mantıklı. Yardım için teşekkürler.
Jeff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.