Apache'de varsayılan belge kökü nasıl devre dışı bırakılır?


13

Sunucumda Apache Httpd çalıştıran bazı web siteleri barındırıyorum. Her web sitesinin kendi etki alanı veya alt etki alanı ve sanal ana bilgisayarı vardır. Bu nedenle, varsayılan belge köküne ihtiyacım yok. O devre dışı mümkün mü DocumentRootin /etc/httpd/conf/httpd.conf?

Yanıtlar:


10

Diğer cevaplar için teşekkürler. Herhangi bir izin olmadan varsayılan bir sanal ana bilgisayar ekleyerek çözdüm. Genel DocumentRootve ServerNameseçenekler, sanal ana bilgisayarda belirtilenlerle eşleşmelidir.

/etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

Bu şekilde, sunucu doğrudan IP ile erişildiğinde 403 Yasak mesaj alıyorum, bu tam olarak istediğim şey. Bunun /var/www/htmliçin mevcut bir dizine ihtiyacım olmasa bile daha iyi olurdu , ancak /dev/nullbunun yerine bir şey belirtirsem Apache şikayet ediyor .


6

Bunu yapmak istediğinden emin değilim. Bir apache yapılandırmasında varsayılan vhost yoksa, ilk tanımlanan vhost varsayılan olur .

Yapmanız gereken tek şey, varsayılan olarak boş bir sayfa sunmaktır.


6

Evet ve hayır.

DocumentRootDirektifi yorumlayabilir veya kaldırabilirsiniz, sorun değil. Ancak bu pek bir şey elde etmez, çünkü PREFIX/htdocs/apache oluşturduğunuzda varsayılan olarak PREFIX'in ayarlandığı varsayılan dizine ayarlanır.

VirtualHosts, açık bir şekilde yapılandırılmış bir sanal ana bilgisayar tarafından işlenmeyen tüm istekleri ayarladığınızda, varsayılan sanal ana bilgisayar tarafından işlenir (genellikle ilk olan, ancak httpd -Ssize söyleyecektir).


1

İçinde uzantı .confbulunan herhangi bir Apache yapılandırma dosyası Apache yapılandırmasının bir /etc/httpd/conf.d/parçası olarak dahil edilecektir. Bu nedenle, varsayılan "Hoş Geldiniz" sayfa yapılandırmasını devre dışı bırakmak için yapılandırmasını yeniden adlandırmamız gerekir/etc/httpd/conf.d/welcome.conf:

Birinci adım varsayılan karşılama dosyasını taşı:

sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

İkinci adım Appache2 hizmetini yeniden başlatın

sudo systemctl restart httpd

0

/Etc/httpd/conf/httpd.conf dosyasında, Dinleme direktifiniz

Listen 80

Bu demek

*:80

/Etc/httpd/conf/httpd.conf ve /etc/httpd/conf.d/default.conf dosyalarınızda aynı olan birkaç <listener>+ tanımladınız <servename>: *:80+ <server-ip>. Yani, Apache sadece birini dikkate alır.

Yani, vhost yapılandırmanız işe yaramaz.

/Etc/httpd/conf/httpd.conf dosyanız / var / www / html dizininize erişimi engellemek için yeterlidir.

Sadece şunu ekleyin:

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

Lütfen https://httpd.apache.org/docs/2.4/en/vhosts/name-based.html#alg adresini okuyun :

Sunucu, uygun ad tabanlı sanal ana bilgisayarı nasıl seçer?

Ad tabanlı sanal ana bilgisayar çözünürlüğündeki ilk adımın IP tabanlı çözüm olduğunu bilmek önemlidir. Ad tabanlı sanal ana bilgisayar çözünürlüğü, adayları en iyi IP tabanlı eşleştirmeye daralttıktan sonra yalnızca en uygun ada dayalı sanal ana bilgisayarı seçer. Tüm VirtualHost yönergelerinde IP adresi için bir joker karakter (*) kullanmak, bu IP tabanlı eşlemeyi alakasız hale getirir.

Bir istek geldiğinde, sunucu, istek tarafından kullanılan IP adresine ve bağlantı noktasına göre en iyi (en spesifik) eşleşen bağımsız değişkeni bulur. Bu en iyi eşleşme adresini ve bağlantı noktası birleşimini içeren birden fazla sanal ana bilgisayar varsa Apache, SunucuAdı ve SunucuAlias ​​yönergelerini istekte bulunan sunucu adıyla daha da karşılaştırır.

SunucuAdı yönergesini herhangi bir ad tabanlı sanal ana bilgisayardan çıkarırsanız, sunucu varsayılan olarak sistem ana bilgisayar adından türetilen tam etki alanı adını (FQDN) kullanır. Örtük olarak ayarlanan bu sunucu adı, sezgisel sanal ana bilgisayar eşleşmesine yol açabilir ve önerilmez.

IP ve bağlantı noktası birleşimi için varsayılan ad tabanlı vhost En özel eşleşen IP adresini ve bağlantı noktası birleşimini içeren sanal ana bilgisayar kümesinde eşleşen hiçbir SunucuAdı veya ServerAlias ​​yoksa, kullanılacak ilk listelenen sanal ana bilgisayar.


0

Varsayılan bağlantı noktasını şu şekilde değiştirin:

Listen 80
Listen 8080 # any fake port

ve VirtualHost'ta * .80 bırakın

Apache2 ve Centos 7 ile çalışır

Belgelerde bulabileceğiniz diğer örnekler . _Default_ değişkenine bir göz atın.


0

Bu sayfayı devre dışı bırakmak için, /etc/httpd/conf.d/welcome.conf dosyasını başka bir adla yeniden adlandırmamız gerekir veya ihtiyacınız yoksa silebilirsiniz.

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup

Apache komutuyla yeniden başlatıldığından (kök olarak) emin olun:

systemctl httpd'yi yeniden başlat

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.