Начнем с создания папок под виртуальные хосты
Крайне желательно чтобы они лежали внутри корневой папки веб-сервера, на которую прописаны разрешающие права в httpd.conf (AppServ\Apache24\conf\), например
Код: Выделить всё
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/AppServ/www">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Таким образом мы видим, что у нас домашней папкой является папка C:/AppServ/www, создадим в ней 2 папки
C:/AppServ/www/host1.ru и C:/AppServ/www/host2.ru
Теперь переходим к настройке веб-сервера
Открываем httpd.conf и в самый конец добавляем строчки
Код: Выделить всё
NameVirtualHost *:80
<VirtualHost *:80> # сюда будет попадать если обратились по ip или по неописанному имени, в частности и по host1.ru
ServerName default
# корневая директория для host1.ru
DocumentRoot ../www/host1.ru
# файл для лога ошибок
ErrorLog logs/host1.ru-error.log
# файл для лога обращений
CustomLog "logs/host1.ru-access.log" common
</VirtualHost>
<VirtualHost *:80> # сюда будут попадать обращения к host2.ru и psevdo2.ru
ServerName host2.ru
# указание алиаса (добавочного имени) домена
ServerAlias psevdo2.ru
DocumentRoot ../www/host2.ru
ErrorLog logs/host2.ru-error.log
CustomLog "logs/host2.ru-access.log" common
</VirtualHost>
естественно, что если вы используете порт отличный от 80го, то именно его и следует указывать
На этом можно было бы и остановиться, но ведь мы хотим и со своей локальной машины иметь возможность обращаться к сайтам по доменному имени.
Поэтому переходим к настройке файла hosts
Открываем файл C:\WINDOWS\system32\drivers\etc\hosts и вписываем в него строки
Код: Выделить всё
127.0.0.1 host1.ru
127.0.0.1 host2.ru
127.0.0.1 psevdo2.ru
После всех правок перезапустите Apache, чтобы он подхватил все изменения
Проверяем
Создадим файл C:/AppServ/www/host1.ru/index.html со следующим содержимым
Код: Выделить всё
<html>
<head><title>HOST1.RU</title></head>
<body style="padding:50px;font-size:18px;text-align:center;">It's Host<b>1</b>.ru</body>
</html>
и файл C:/AppServ/www/host2.ru/index.html со следующим содержимым
Код: Выделить всё
<html>
<head><title>HOST2.RU</title></head>
<body style="padding:50px;font-size:18px;text-align:center;">It's Host<b>2</b>.ru</body>
</html>
Примечание. Повышаем защищенность phpMyAdmin.
Т.к. в последнее время почти у всех присутствует phpMyAdmin, нелишне будет ограничить доступ к нему, заодно вынеся на отдельный виртуальный хост.
Добавим в конец httpd.conf
Код: Выделить всё
<VirtualHost *:80>
<Directory "C:/AppServ/www/phpMyAdmin">
Order deny,allow
Allow from 127.0.0.1
Allow from 192.168.1
Deny from all
</Directory>
ServerName pma
DocumentRoot ../www/phpMyAdmin
ErrorLog logs/pma-error.log
CustomLog "logs/pma-access.log" common
</VirtualHost>
также добавим в C:\WINDOWS\system32\drivers\etc\hosts строку
Код: Выделить всё
127.0.0.1 pma
Таким образом мы сможем обратиться к phpMyAdmin с компьютера, на котором установлен веб-сервер (127.0.0.1) и с компьютеров локальной сети (192.168.1.ххх) по виртуальному доменному имени "http://pma" (причем чтобы обращаться с компьютеров локальной сети, надо в их файле hosts указать "192.168.1.2 pma" (если IP вашего сервера 192.168.1.2) ). При обращении с других машин будет выводиться ошибка
Если вам все же необходим доступ к phpMyAdmin не только с локальной машины, но и удаленно, то можно убрать блок
Код: Выделить всё
<Directory "C:/AppServ/www/phpMyAdmin">
Order deny,allow
Allow from 127.0.0.1
Allow from 192.168.1
Deny from all
</Directory>
либо добавить в него строки разрешающие доступ с конкретного IP или подсети.
В любом случае, даже без запретов по IP, вынесение phpMyAdmin на отдельный хост усложнит для хакера его поиск и как следствие взлом, особенно если имя хоста, а также имя и пароль пользователя будут сложны для подбора по словарям.
Не забывайте перезапускать Apache, после изменения httpd.conf
Код: Выделить всё
Copyright © 2009 Creaternal (v-tanke.ru).