Yanıtlar:
Diğer cevaplar için teşekkürler. Herhangi bir izin olmadan varsayılan bir sanal ana bilgisayar ekleyerek çözdüm. Genel DocumentRoot
ve ServerName
seç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/html
için mevcut bir dizine ihtiyacım olmasa bile daha iyi olurdu , ancak /dev/null
bunun yerine bir şey belirtirsem Apache şikayet ediyor .
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.
Evet ve hayır.
DocumentRoot
Direktifi 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 -S
size söyleyecektir).
İçinde uzantı .conf
bulunan 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
/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.
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.
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