Настройка виртуальных хостов в Apache (AppServ/Denwer/...)

Описание: Прочии темы
Модератор: Aleksandr

LILUS M
Автор темы, Старшина
Старшина
Аватара
LILUS M
Автор темы, Старшина
Старшина
Сообщения: 136
Зарегистрирован: 2 мая 2013
С нами: 10 лет 11 месяцев

#1 LILUS » 23 июля 2018, 21:52

Допустим, что стоит задача сделать поддержку двух разных сайтов host1.ru и host2.ru, причем чтобы при обращении к серверу по IP, открывался host1.ru. И поддержку псевдонима psevdo2.ru, при запросе к которому будет открываться host2.ru.

Начнем с создания папок под виртуальные хосты

Крайне желательно чтобы они лежали внутри корневой папки веб-сервера, на которую прописаны разрешающие права в 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). 


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Прочее»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 3 гостя