Vhost apache настройка windows

Виртуальные хосты Apache

Что такое виртуальный хост Apache

Термин Virtual Host (виртуальный хост) относится к практике запуска более чем одного сайта (такие как company1.example.com и company2.example.com) на одной машине. Виртуальные хосты могут быть «IP-based», что означает, что у вас есть различные IP адреса для каждого сайта, или «name-based», что означает, что у вас есть несколько имён, работающие на каждом IP адресе. Для конечного пользователя тот факт, что эти сайты работают на одном и том же физическом сервере, не является очевидным, то есть он может об этом и не знать.

В этой статье я рассмотрю создание виртуальных хостов на основе имени, так как это более распространено, особенно на локальном сервере. О других вариантах, о создании виртуальных хостов на основе IP, в том числе на локальном сервере, а также об автоматическом создании виртуальных хостов, смотрите в статье «Настройка Apache в Windows».

Можно создать виртуальный хост Apache — один или сразу много. Суть хостов Apache в том, что в браузере вместо ввода IP к сайту можно обратиться по имени хоста — точно также как мы открываем все сайты в Интернете: мы вводим доменное имя, а не IP адрес сайта. Аналогично можно настроить и на локальном веб-сервере: в браузере вместо 127.0.0.1 или вместо localhost можно открывать свои локальные сайты, например, по легко запоминающимся именам.

Особенности настройки виртуальных хостов Apache в Windows

Прежде чем приступить к настройке, совсем немного теории: при открытии сайтов по доменному имени или по имени хоста, веб-браузеру всё равно нужно знать IP адрес веб-сервера, куда делается запрос. Эту проблему решают DNS сервера. То есть перед открытием они спрашивают у сервера имён DNS, какой IP имеет сайт, например, apache-windows.ru?

Поскольку мы не можем добавить запись в DNS сервер для нашего локального сайта, мы воспользуемся другой возможностью операционной системы.

Суть в том, что аналогичные записи, как в DNS сервер, можно добавить в системный файл C:\Windows\System32\drivers\etc\hosts и Windows перед тем, как отправить запрос к DNS серверу, также сделает запрос к этому файлу.

Допустим я хочу создать виртуальный хост Apache с именем php.test, тогда я открываю файл C:\Windows\System32\drivers\etc\hosts и добавляю в него запись

Вы можете добавить в этот файл любое количество хостов с указанием любых IP адресов. Каждая запись должна быть на собственной строке. Первым должен быть помещён IP адрес, а затем соответствующее имя хоста. IP адрес и имя хоста должны быть разделены хотя бы одним пробелом. Вместо пробела можно использовать табуляцию (Tab).

В этом файле можно вставлять комментарии — комментариями считаются все строки, которые начинаются с символа # (решётка). Комментарии могут быть как размещены на отдельных строках, так и следовать после имени машины. Итак, мы выполнили подготовительный этап — прописали имя нашего виртуального хоста в файле hosts. В результате запрос, сделанный к этому виртуальному хосту, теперь будет перенаправляться веб-серверу Apache — именно этого мы и добивались.

Читайте также:  Варианты загрузки windows с bios

Настройка в Apache виртуальных остов на основе имени

Теперь нам нужно сделать так, чтобы сам веб-сервер Apache мог обрабатывать пришедший запрос для определённого хоста. То есть мы наконец-то переходим к настройке Apache.

Откройте главный конфигурационный файл httpd.conf (например у меня он расположен по адресу C:\Server\bin\Apache24\conf\httpd.conf).

Найдите там строку:

И раскомментируйте её, чтобы получилось:

и убедитесь, что она раскомментирована.

Сохраните и закройте этот файл.

Теперь откройте сам файл httpd-vhosts.conf (c:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf). Содержимое этого файла можно просто удалить — оно нам не понадобится.

Виртуальные хосты описываются в контейнере . Внутри этого контейнера можно указать практически любые директивы Apache. Но обязательными являются только две:

  • ServerName — определяет само имя хоста
  • DocumentRoot — определяет, какие файлы показывать для этого имени, то есть содержит путь до сайта этого хоста

Секций может быть любое количество — столько, сколько вам нужно виртуальных хостов на данном сервере.

Ещё одно правило: первый раздел VirtualHost используется для сбора всех запросов, которые не соответствуют ServerName или ServerAlias в любом другом блоке . То есть первая секция является как бы дефолтной — для всех остальных запросов, которые не предназначены для виртуальных хостов. Поэтому нам нужно сделать как минимум два контейнера :

  1. Будет собирать запросы, которые не предназначены ни для какого из хостов. Обычные запросы, например, к localhost или 127.0.0.1
  2. Контейнер самого хоста (у меня хост называется php.test)

Что будет если не сделать первый («дефолтный») контейнер? Все запросы, которые даже те, которые не предназначаются для php.test, всё равно будут обрабатываться как будто бы они пришли для хоста php.test.

Вместе с контейнером VirtualHost можно указать IP адрес и порт, которые прослушиваются для данного хоста. Если вы используете какой-то нестандартный порт, который ещё не открыт с помощью директивы Listen, то вам нужно добавить эту директиву с соответствующим портом в главный конфигурационный файл или прямо в файл httpd-vhosts.conf. Например, я хочу, чтобы виртуальный хост был привязан к порту 81, тогда перед VirtualHost мне нужно добавить:

Для нашего примера я буду использовать стандартный 80 порт, а в качестве IP адреса укажу звёздочку. Дефолтным хостом у меня является localhost, файлы которого расположены по пути C:/Server/data/htdocs/, тогда первый контейнер выглядит так:

Второй контейнер создан для хоста php.test, и его файлы будут располагаться в папке C:/Server/data/htdocs/virthosts/host1/, тогда полностью код контейнера будет выглядеть так:

Собираем всё вместе, полное содержимое файла httpd-vhosts.conf:

Чтобы сделанные изменения вступили в силу, перезапускаем веб-сервер:

Открываю в веб-браузере ссылку http://php.test и вижу там тот файл, который создан для этого хоста (то есть размещён в папке C:/Server/data/htdocs/virthosts/host1/):

Кроме этих самых необходимых директив, как уже было сказано, можно использовать практически любые настройки хостов, которые поддерживает главный конфигурационный файл Apache.

Например, кроме ServerName, можно добавить ещё ServerAlias:

Можно установить отдельные файлы логов для каждого виртуального хоста:

Читайте также:  Поисковая строка windows где она

Установить с помощью директивы ServerAdmin электронную почту администратора данного виртуального хоста, включить HTTPS отдельно для данного хоста. Кстати, настройки HTTPS нужно прописывать индивидуально для каждого виртуального хоста, поскольку у каждого из них свои собственные SSL сертификаты.

На уровне виртуальных хостов можно прописать правила mod_rewrite, настроить аутентификацию, контроль доступа и любые другие настройки, которые поддерживает Apache, можно перенести в конфигурацию виртуальных хостов для их тонкой и индивидуальной настройки.

httpd-vhosts.conf — конфигурирование Apache для поддержки виртуальных хостов

Apache — виртуальные хосты

httpd-vhosts.conf — создание виртуальных хостов

Концепция виртуальных хостов позволяет создавать, конфигурировать и обслуживать на одном (физическом) веб-сервере Apache множество сайтов.
Виртуальный хост может быть:
«привязанным к IP-адресу» — используется отдельный IP-адрес для каждого сайта
или
«привязанным к имени» — один IP-адрес для множества сайтов с различными именами.

Термин Виртуальный — якобы существующий, получил распространение в конце 80-х годов. Компьютеры того времени не имели жестких дисков и при включении могли только подвести считывающую головку дисковода к первой дорожке гибкого диска. В начале работы, с пятидюймового системного диска емкостью 256 Кб загружались в память основные компоненты операционной системы (OS-DOS). Затем, с другой дискеты, программное обеспечение, например, Бейсик. Созданная на нем программа записывалась на гибкий диск. Для её исполнения необходимо было загрузить в память интерпретатор Бейсика. То есть, постоянно работал дисковод, приходилось менять гибкие диски, что занимало много времени.
На определенном этапе, с увеличением емкости памяти, появилась возможность часть её выделять и присваивать имя. В эту, именованную, допустим, как диск N, область памяти (получившую название — виртуальный диск), переписывалось нужное программное обеспечение. Отпадала необходимость постоянно обращаться к гибким дискам, что в десятки раз увеличивало производительность работы.

Хост (жарг. host — хозяин) — в обычном понимании любой компьютер, сервер, подключённый к локальной или глобальной сети.

Веб-узел — каждый подключенный к Интернету компьютер, независимо от выполняемых функций (сервер, компьютер клиента, DNS и FTP-сервер и т. д.) — имеет свой уникальный IP-адрес. Иначе обмен информацией — невозможен.

При включении модема, маршрутизатора интернет-провайдер выделит, для входа в сеть Интернет с вашего компьютера, динамический (временный) IP — адрес (ай-пи-адрес).

18 апреля 2021 года. , в [an error occurred while processing this directive] вам выделен IP — [an error occurred while processing this directive]

Например:
Сайт avege.ru
IP сайта 95.213.139.92
Ваш IP 185.151.241.146 Определить ваш IP
протокол сервера HTTP/1.1

После получения у интернет-провайдера IP — адреса и установки канала связи, происходит преобразование имени сайта, портала, сервера, например — vk.com (ВКонтакте), в понятный для компьютера его полный адрес IP, имеющий вид — 87.240.165.80
Служба Internet выполняющая эту операцию, называется службой имен доменов — службой DNS (Domain Name System — система доменных имён).
Компьютеры, обеспечивающие выполнение программ этой службы, называются серверами имен доменов — серверами DNS (Domain Name Servers).
DNS используется для обозначения обоих понятий — службы и серверов имён доменов.

Администратор: Командная строка

HTTP-сервер социальной сети ВКонтакте имеет выделенный IP-адрес — 87.240.165.80.

На предыдущей странице, в файл конфигурации для настройки каталогов пользователей — httpd-userdir.conf, были внесены изменения — определён каталог для виртуальных хостов (сайтов пользователей) — UserDir «www/docs».

Далее, в конфигурационном файле httpd-vhosts.conf нужно, в секции (секциях) VirtualHost, изменить несколько директив для вашего сайта (сайтов).

В начале внесите в файл httpd-vhosts.conf изменения для одного сайта

Для примера, можно временно назвать сайт — namesite.ru. — Это имя (доменное имя) одного из разрабатываемых или отлаживаемых сайтов на сервере Apache, которое, после полной настройки сервера Apache, легко будет заменить на выбранное вами.
При обращении к любому сайту по имени — //www.имя-сайта.ru/, будет выведена индексная страница — index.html

  • C:\
    • www
      • docs
        • logs
          • namesite.ru-access.log
          • namesite.ru-error.log
        • cgi-bin
          • script1.pl
          • script2.cgi
        • namesite.ru
          • подкаталог 1
            • page-1.html
            • page-n.html
          • подкаталог n
            • page-1.html
            • page-n.html
          • index.html — индексная (главная) страница сайта
      • html
        • logs
          • namesite.ru-access.log
          • namesite.ru-error.log
        • cgi-bin
          • script1.pl
          • script2.cgi
        • namesite.ru
          • подкаталог 1
            • page-1.html
            • page-n.html
          • подкаталог n
            • page-1.html
            • page-n.html
          • index.html — индексная (главная) страница сайта
    • Каталоги и файлы OS Windows и других программ

Внимание! Без внесения изменений в файл — httpd-vhosts.conf

при проверке файла конфигурации виртуальных хостов с помощью команды — httpd.exe -S, вы получите несколько предупреждений:

Администратор: Командная строка

В каталоге C:/Program Files/Apache Software Foundation/Apache2.4/conf/extra/
откройте в Блокноте файл httpd-vhosts.conf

Из содержания файла httpd-vhosts.conf становятся понятными причины ошибок:

AH00112: Внимание: DocumentRoot [ C:/Program Files/Apache Software Foundation/Apache2.4/docs/ dummy-host.server-apache24.ru] не существует
AH00112: Внимание: DocumentRoot [ C:/Program Files/Apache Software Foundation/Apache2.4/docs/ dummy-host2.server-apache24.ru] не существует

В частности, видно, что сервер Apache не может обратится к папкам примеров сайтов:
dummy-host.server-apache24.ru
dummy-host2.server-apache24.ru
Которые должны быть размещены в каталоге хостов — C:/Program Files/Apache Software Foundation/Apache2.4/docs/.

Доменные имена — dummy-host.server-apache24.ru и dummy-host2.server-apache24.ru (dummy — кукла, example — образец) — по многолетней традиции, используются для примера и их необходимо изменить.

Возможен и смешанный вариант конфигурирования.

Виртуальные хосты основанные на адресе IP.
Первый шаг заключается в создании блока из комбинации адреса-IP и номера порта для каждого отдельного узла.
Пример — — привязывает виртуальные хосты к адресу -127.0.0.8 и 80-му порту:

namesite.ru — это имя (доменное имя) для разрабатываемого (тестируемого, отлаживаемого) сайта. Которое, после настройки веб-сервера Apache, можете заменить на выбранное вами.

Ни один сайт, в сети WWW, не может иметь IP-адрес из диапазона 127.0.0.1 — 127.255.255.255

Поэтому, в секциях — вместо символа » * » нужно указать IP-адрес из из указанного диапазона.

Для обращения к вашему сайту по доменному имени, например — namesite.ru, нужно, в файле конфигурации httpd-vhosts.conf, создать секцию . В директивах которой указать пути к каталогу, подкаталогам и файлам вашего сайта.

Сайты виртуальных хостов конфигурируются в файлах httpd-vhosts.conf и httpd-userdir.conf.

Внесите изменения в файл httpd-vhosts.conf , как показано ниже.

Все записи, за исключением выделенных красным цветом, должны быть закомментированы. Строки начинающиеся с символа ‘#’ — это комментарии.

Для проверки файлов конфигурации на синтаксические ошибки, используется команда — httpd.exe -t.

Проверить файл конфигурации виртуальных хостов можно с помощью команды — httpd.exe -S.

Директива — команда конфигурации, которая контролирует один или несколько аспектов поведения сервера Apache.

Читайте также:  Клон для mac os
Оцените статью