Не открывать необъявленные виртуальные хосты

Рейтинг: 1Ответов: 1Опубликовано: 25.03.2015

Добрый день.

На компе Win стоит виртуальная машина, на ней развернута CentOS 6.6 (minimal) + Apache. Также на ней статический IP 192.168.1.15.

Основной конфигурационный файл /etc/conf/httpd.conf не тронут, и в нем нет объявления виртуальных хостов.

В отдельном конфигурационном файле /etc/conf.d/virt.conf объявлены два виртуальных хоста:

NameVirtualHost *:80
NameVirtualHost *:443

<Directory /var/www/html/>
    AllowOverride All
    Options All
</Directory>

<VirtualHost *:80>
    DocumentRoot /var/www/html/site1
    ServerName site1.test.ru
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateKeyFile /etc/httpd/conf.d/server.key
    SSLCertificateFile /etc/httpd/conf.d/server.crt
    DocumentRoot /var/www/html/site2
    ServerName site2.test.ru
</VirtualHost>

На основной физической машине с Win в файле hosts прописаны:

192.168.1.15 site1.test.ru
192.168.1.15 site2.test.ru

При попытке зайти с основном физической машины на http://site1.test.ru попадаю в каталог /var/www/html/site1

При попытке зайти с основном физической машины на https://site2.test.ru попадаю в каталог /var/www/html/site2

При попытке зайти с основном физической машины на http://site2.test.ru попадаю в каталог /var/www/html/site1 (Чего не должно быть!)

При попытке зайти с основном физической машины на http://192.168.1.15 попадаю в каталог /var/www/html/site1 (Чего не должно быть!)

Подскажите, пожалуйста, в чем тут дело и как его решить?

Спасибо.

Ответы

▲ 1

Когда Вы набираете http://site2.test.ru - идет обработка директив виртуальных хостов, начинающих с <VirtualHost *:80>, так как выбран протокол HTTP, работающий по 80 порту.

Если Вы наберете https://site2.test.ru, то попадете в /var/www/html/site2.

Чтобы сделать /var/www/html/site2 для всех протоколов, замените директиву <VirtualHost *:443> на <VirtualHost *:*>