Apache windows virtualhost настройка

Данное руководство предназначено для использования в локальной среде тестирования на Windows. Инструкции подходят для Apache 2.4 и более поздних версий.

  1. Создайте вложенную папку внутри C:\vhosts для каждого виртуального хоста, который вы хотите добавить на сервер Apache.
  2. Откройте C:\WINDOWS\system32\drivers\etc\hosts в блокноте или в любом другом текстовом редакторе. Найдите следующую строку в нижней части документа:
    127.0.0.1   localhost
  3. На отдельной пустой строке введите 127.0.0.1, затем поставьте пробел и введите имя виртуального хоста, который необходимо зарегистрировать. Например, чтобы создать виртуальный хост с именем mysite, введите следующую команду:
    127.0.0.1   mysite
  4. Добавьте нужное количество дополнительных виртуальных хостов, каждый из которых должен быть введён на отдельной строке с указанием того же IP-адреса (127.0.0.1). Сохраните файл хостов, и закройте его.
  5. Откройте конфигурационный файл Apache, httpd.conf, в текстовом редакторе. Он находится в файлах Apache в папке conf. Если вы используете XAMPP, этот файл находится по адресу C:\xampp\apache\conf\httpd.conf. Прокрутите вниз до конца раздела Supplemental configuration и найдите следующий раздел (приблизительно около 500 строки):
    #Virtual hosts
    #Include conf/extra/httpd-vhosts.conf
  6. Сотрите # около начала второй строки, раздел теперь должен выглядеть так:
    #Virtual hosts
    Include conf/extra/httpd-vhosts.conf
  7. Сохраните файл httpd.conf и закройте его.
  8. Откройте extra\httpd-vhosts.conf в блокноте или в любом другом текстовом редакторе. Если вы используете XAMPP, то адрес будет таким C:\xampp\apache\conf\extra\httpd-vhosts.conf. Главный раздел выглядит так:

    В XAMPP все строки будут закомментированы. Вам нужно удалить # в начале строки, содержащей следующую директиву:

    NameVirtualHost *.80
  9. Переместите курсор в область пустого пространства, расположенного на 15 строке в предыдущем скриншоте, и вставьте туда следующие три строки кода:
    <Directory C:/vhosts>
      Require all granted
    </Directory>

    Это позволяет установить правильные разрешения для папки, содержащей сайты, которые нужно рассматривать в качестве виртуальных хостов.

  10. На скриншоте в строках с 27 по 42 расположен код, который показывает примеры определения виртуальных хостов (в XAMPP они закоментированы). Там показаны все команды, которые могут быть использованы, но из них только DocumentRoot и ServerName являются обязательными.

    Когда вы используете виртуальный хостинг, Apache отключает главный корень сервера, поэтому первое определение должно содержать оригинальный корневой каталог. Затем вы добавляете каждый новый виртуальный хост внутри пары тегов <VirtualHost>, используя расположение веб-файлов сайта в качестве значения для DocumentRoot, и имя виртуального хоста для ServerName. Если путь содержит пробелы, то необходимо весь путь заключить в кавычки. Если ваш корневой каталог расположен, как у меня, в C:\htdocs, и вы добавляете mysite в качестве виртуального хоста в C:\vhosts, измените код на строках с 27 по 42 следуя следующему примеру (в XAMPP, просто добавить эти новые директивы в нижней части файла, и установить DocumentRoot для localhost в C:/xampp/htdocs):

    <VirtualHost *:80>
      DocumentRoot c:/htdocs
      ServerName localhost
    </VirtualHost>
    <VirtualHost *:80>
      DocumentRoot c:/vhosts/phpdw
      ServerName mysite
    </VirtualHost>
    
  11. Сохраните httpd-vhosts.conf и перезапустите Apache. Все сайты в корневом каталоге сервера будет по-прежнему доступны через httр://localhost/sitename/. Все, что в виртуальном хосте будет доступен через прямой адрес, например, httр://mysite/.
  12. Если у вас есть трудности с доступом к виртуальным хостам, убедитесь, что вы добавили index.php в директиву DirectoryIndex в файле httpd.conf.

Термин 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 и добавляю в него запись

127.0.0.1               php.test

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

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

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

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

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

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

#Include conf/extra/httpd-vhosts.conf

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

Include conf/extra/httpd-vhosts.conf

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

LoadModule log_config_module modules/mod_log_config.so

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

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

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

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

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

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

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

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

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

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

Listen 81

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

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "C:/Server/data/htdocs/"
</VirtualHost>

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

<VirtualHost *:80>
    ServerName php.test
    DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"
</VirtualHost>

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

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "C:/Server/data/htdocs/"
</VirtualHost>

<VirtualHost *:80>
    ServerName php.test
    DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"
</VirtualHost>

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

c:\Server\bin\Apache24\bin\httpd.exe -k restart

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

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

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

ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com

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

ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common

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

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

Связанные статьи:

  • Несколько сайтов на Apache (100%)
  • Виртуальный хост Apache по умолчанию. _default_ и catch-all в Apache (100%)
  • Apache для Windows (53.4%)
  • Как запустить Apache на Windows (53.4%)
  • Документация по Apache на русском языке (53.4%)
  • Почему в логах ошибок Apache не сохраняются записи об ошибке 404 (RANDOM — 53.4%)

Виртуальные хосты могут быть привязаны к имени хоста (например, host.local) или к IP-адресу (например, 127.0.0.3). Рассмотрим оба способа, и начнём с создания директорий виртуальных хостов. После установки Apache у меня уже есть директория DocumentRoot:

DocumentRoot d:/work/localhost/www
<Directory "d:/work/localhost*/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Внутри директории d:/work создаем еще три: localhost1, localhost2, localhost3. Внутри каждой директории localhost* создаем еще одну директорию www. В каждую папку www добавляем файл index.html с любым содержанием, который позволил бы идентифицировать хост. Например

  • в файл D:\work\localhost1\www\index.html добавляем текст «localhost1»
  • в файл D:\work\localhost2\www\index.html добавляем текст «localhost2»
  • в файл D:\work\localhost3\www\index.html добавляем текст «localhost3»
[D:\]
    [work]
        [localhost]
            [www]
                index.html
            access.log
            error.log
        [localhost1]
            [www]
                index.html
            access.log
            error.log
        [localhost2]
            [www]
                index.html
            access.log
            error.log
        [localhost3]
            [www]
                index.html
            access.log
            error.log

В файле C:\wamp\apache\conf\httpd.conf надо найти и раскоментировать строку:

Include conf/extra/httpd-vhosts.conf

В файле C:\wamp\apache\conf\extra\httpd-vhosts.conf надо закомментировать (или удалить) те строки, которые приведены по умолчанию.

Виртуальные хосты на основе IP-адреса

Для виртуальных хостов, которые привязаны к IP, требуются несколько IP-адресов. Таковые у нас имеются: это 127.0.0.1, 127.0.0.2, 127.0.0.3, 127.0.0.4, 127.0.0.5 и так далее. И к каждому из них можно привязать виртуальный хост.

Для этого добавляем в файл C:\Windows\System32\drivers\etc\hosts строки

127.0.0.1 localhost host.ru www.host.ru
127.0.0.2 localhost1 host1.ru www.host1.ru
127.0.0.3 localhost2 host2.ru www.host2.ru
127.0.0.4 localhost3 host3.ru www.host3.ru

А в файл C:\wamp\apache\conf\extra\httpd-vhosts.conf добавляем следующее

#
#   localhost
#
<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@localhost
    ServerName localhost
    DocumentRoot d:/work/localhost/www
    ServerAlias host.ru www.host.ru
    ErrorLog d:/work/localhost/error.log
    CustomLog d:/work/localhost/access.log common
</VirtualHost>
#
#   localhost1
#
<VirtualHost 127.0.0.2:80>
    ServerAdmin admin@localhost1
    ServerName localhost1
    DocumentRoot d:/work/localhost1/www
    ServerAlias host1.ru www.host1.ru
    ErrorLog d:/work/localhost1/error.log
    CustomLog d:/work/localhost1/access.log common
</VirtualHost>
#
#   localhost2
#
<VirtualHost 127.0.0.3:80>
    ServerAdmin admin@localhost2
    ServerName localhost2
    DocumentRoot c:/work/localhost2/www
    ServerAlias host2.ru www.host2.ru
    ErrorLog d:/work/localhost2/error.log
    CustomLog d:/work/localhost2/access.log common
</VirtualHost>
#
#   localhost3
#
<VirtualHost 127.0.0.4:80>
    ServerAdmin admin@localhost3
    ServerName localhost3
    DocumentRoot d:/work/localhost3/www
    ServerAlias host3.ru www.host3.ru
    ErrorLog d:/work/localhost3/error.log
    CustomLog d:/work/localhost3/access.log common
</VirtualHost>

Теперь можно обращаться к виртуальным хостам так:

  • http://127.0.0.1, http://localhost/, http://host.ru/, http://www.host.ru/
  • http://127.0.0.2, http://localhost1/, http://host1.ru/, http://www.host1.ru/
  • http://127.0.0.3, http://localhost2/, http://host2.ru/, http://www.host2.ru/
  • http://127.0.0.4, http://localhost3/, http://host3.ru/, http://www.host3.ru/

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

Для этого добавляем в файл C:\Windows\System32\drivers\etc\hosts строки

127.0.0.1 localhost host.ru www.host.ru
127.0.0.1 localhost1 host1.ru www.host1.ru
127.0.0.1 localhost2 host2.ru www.host2.ru
127.0.0.1 localhost3 host3.ru www.host3.ru

А в файл C:\wamp\apache\conf\extra\httpd-vhosts.conf добавляем следующее

#
#   localhost
#
<VirtualHost *:80>
    ServerAdmin admin@localhost
    ServerName localhost
    DocumentRoot d:/work/localhost/www
    ServerAlias host.ru www.host.ru
    ErrorLog d:/work/localhost/error.log
    CustomLog d:/work/localhost/access.log common
</VirtualHost>
#
#   localhost1
#
<VirtualHost *:80>
    ServerAdmin admin@localhost1
    ServerName localhost1
    DocumentRoot d:/work/localhost1/www
    ServerAlias host1.ru www.host1.ru
    ErrorLog d:/work/localhost1/error.log
    CustomLog d:/work/localhost1/access.log common
</VirtualHost>
#
#   localhost2
#
<VirtualHost *:80>
    ServerAdmin admin@localhost2
    ServerName localhost2
    DocumentRoot c:/work/localhost2/www
    ServerAlias host2.ru www.host2.ru
    ErrorLog d:/work/localhost2/error.log
    CustomLog d:/work/localhost2/access.log common
</VirtualHost>
#
#   localhost3
#
<VirtualHost *:80>
    ServerAdmin admin@localhost3
    ServerName localhost3
    DocumentRoot d:/work/localhost3/www
    ServerAlias host3.ru www.host3.ru
    ErrorLog d:/work/localhost3/error.log
    CustomLog d:/work/localhost3/access.log common
</VirtualHost>

Теперь можно обращаться к виртуальным хостам так:

  • http://localhost/, http://host.ru/, http://www.host.ru/
  • http://localhost1/, http://host1.ru/, http://www.host1.ru/
  • http://localhost2/, http://host2.ru/, http://www.host2.ru/
  • http://localhost3/, http://host3.ru/, http://www.host3.ru/

Дополнительно

  • Установка веб-сервера (Apache 2.4, MySQL 8.0, PHP 7, phpMyAdmin) на Windows 10
  • Подключение виртуальных хостов Apache в Windows

Поиск:
Apache • Web-разработка • Windows • Установка • Настройка • Виртуальный хост • IP-адрес • VirtualHost

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Создаем папку websites на диске C:\
В ней папку нашего локального сервера test.loc
В ней создаем еще 3 папки

c:\websites\test.loc\
    log            //тут будут храниться наши логи
    conf          //тут будет храниться наш файл конфигурации
    www        //тут будут храниться файлы нашего сайта

Далее правка файла hosts
Сам файл должен находится в папке «C:\windows\system32\drivers\etc\»
В любом месте пишем
127.0.0.1        test.loc    www.test.loc

Далее создаем в c:\websites\test.loc\conf
наш файл конфигурации test.loc.conf
В нем пишем

<VirtualHost *:80>
#Основное название сайта
ServerName test.loc

#Дополнительные названия сайта
#*.test.loc — доступны все поддомены для test.loc
ServerAlias *.test.loc

DocumentRoot «c:/websites/test.loc/www»
ServerAdmin webmaster@test.loc

#Пути к логам сайта
ErrorLog «c:/websites/test.loc/log/error.log»
CustomLog «c:/websites/test.loc/log/access.log» combined

# Настройки директории сайта
<Directory «c:/websites/test.loc»>

Options Indexes FollowSymLinks  
//Если напишем -Indexes, то запретим просмотр каталога, если файла index.php или index.html не будет.
AllowOverride All  //All — разрешает файл .htaccess, его можно создать в корне test.loc
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

   
В папке c:\websites\test.loc\www
создаем наш тестовый файл index.php.
Внутри его пишем  <?php echo phpinfo(); ?>

Теперь открываем c:/Apache/conf/httpd.conf»
В файле httpd.conf пишем, можно в самом конце добавить

#Подключение виртуальных хостов
NameVirtualHost *:80

#Загрузка настроечных файлов для каждого сайта
Include «c:/websites/test.loc/conf/test.loc.conf»

Ищем также эту директиву и добавляем
<IfModule dir_module>
DirectoryIndex index.php index.html  //Apache будет искать index.php, если его нет, то index.html
</IfModule>

Сохраняем все и перезапускаем Apache
Открываем браузер и пишем test.loc

Если все настроено правильно, то Apache не выдаст ошибок и откроется страница с описанием PHP и его модулей.

Таким способом, вы можете создать сколько угодно сайтов.

!!!Тут еще есть один нюанс, теперь если вы в браузере наберете
localhost, то выведется тот локальный сайт, который первый подключен в httpd.conf,
а мы с вами первым подключили test.loc 

Вернуть наш localhost можно следующим образом
Создаем в «c:/Apache/htdocs/conf»
наш файл конфигурации htdocs.conf

В нем пишем
<VirtualHost *:80>ServerName localhost
DocumentRoot «c:/Apache/htdocs»
</VirtualHost>


Либо вот так, чтобы не лазить в с основной httpd.conf файл
<VirtualHost *:80>
ServerName localhost
DocumentRoot «c:/Apache/htdocs»
<Directory «c:/Apache/htdocs»>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Теперь открываем c:/Apache/conf/httpd.conf»
В файле httpd.conf пишем, нужно в самом начале добавить

#Загрузка настроечных файлов для каждого сайта
Include «c:/Apache/htdocs/conf/htdocs.conf»
Include «c:/websites/test.loc/conf/test.loc.conf»

Author: Admin/Publisher |finished | checked

In this post, we will see how to configure virtual hosts for Apache on Windows. Many times, we install XAMPP, MAMP, or WAMP on Windows, but we find that to access our projects, we have to go through URLs like “localhost/test/” or “localhost/examples/project1.” Wouldn’t it be more convenient to have a local domain like “miproject1.local,” “miproject2.local,” and so on?


As you may guess, setting up virtual hosts allows us to have multiple websites on a single physical machine.

In this case, we will see how to do it in our local environment, but keep in mind that you can use virtual hosts to have multiple sites on the same VPS host. Also, note that we are not hosting our own domain. If you want to learn about hosting domains, you can search for Bind9.

Windows hosts file

The hosts file is an extensionless text file located in the Windows operating system, and it is used to map domain names to IP addresses. It provides a simple and manual way to establish an association between a domain name and a specific IP address at a local level.


IMPORTANT: The hosts file requires administrator permissions to be modified.

One helpful approach is to open the hosts file with Visual Studio Code, as it will prompt us to save changes as an administrator.

Let’s find out where the hosts file is located and examine its contents.

By default, it is typically found at C:\Windows\System32\drivers\etc\hosts.

Let’s take a look at its contents:

C:\Windows\System32\drivers\etc\hosts

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

The localhost IP

See that the hosts file is typically a file where all lines are commented, and some lines provide instructions on how to use it. Additionally, there are two commonly used lines that we will utilize.

#127.0.0.1 localhost

#::1 localhost

127.0.0.1 is the IPv4 address of localhost, and ::1 is the IPv6 address of localhost. The local IP address 127.0.0.1, also known as the loopback address or “localhost,” is a special address used to access the local machine from itself. In other words, it is a way to refer to the own machine without relying on an external network connection.

On my computer, I am using XAMPP, so I will uncomment the IPv4 line. Please note that by doing this, we are associating the localhost domain with the current machine.

If we write the following in the hosts file:

hosts

127.0.0.1 localhost
127.0.0.1 project1.local
127.0.0.1 project2.local

Understanding ip vinculation in hosts

These 3 domains are related with the IP 127.0.0.1 now, be clear that this is for our machine. For example, if I do the following line:

hosts

127.0.0.1 google.com

¿What will happen here?

Well if we check it on our browser, it will not find the page, we directly are saying that google.com is in our machine(PC). Take In consideration that I don’t up the Apache server, if we take the server up probably when I check in the browser I will see the XAMPP dashboard


IMPORTANT ALERT: My recommendation is to never log in to a website, such as Facebook, Instagram, a bank, etc., on a PC that is not yours.

Why? As you can see in the example, I could forge the Google page for the machine I am using, which could result in a phishing attempt.

The fact that I haven’t created the page yet gives us a false sense of security, thinking that even if someone does this, they won’t be able to trick us. However, this is a completely false sense of security.

In the following sections, we will see how to do this because we want to present our clients with a local address.

Setting the Virtual Host in our PC

Please note that we are talking about Apache, and in my particular case, I am using XAMPP on my PC, which installs Apache, MySQL, and PHP as part of the package.

To activate our Virtual Host, we need to access the folder where Apache is installed.

In XAMPP, this is relatively easy.

Once inside the Apache folder, I need to go to the “config” folder and then open the httpd.conf file.

The httpd.config file

Inside the httpd.conf file, we will look for these lines.

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

And we will remove the # comment symbol in front of “Include conf/extra/httpd-vhosts.conf”.

Save the file and we’re done.

Configuring the virtual host

Now, we need to go to the httpd-vhosts.conf file, which is located as indicated by the include statement: Path inside Apache’s “conf/extra/httpd-vhosts.conf”.

Inside this file, we can define our virtual host. But let’s first see what the file contains.

httpd-vhosts.conf

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# 
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
##NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ##ServerName or ##ServerAlias in any  block.
#
##
    ##ServerAdmin webmaster@dummy-host.example.com
    ##DocumentRoot "D:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##

##
    ##ServerAdmin webmaster@dummy-host2.example.com
    ##DocumentRoot "D:/xampp/htdocs/dummy-host2.example.com"
    ##ServerName dummy-host2.example.com
    ##ErrorLog "logs/dummy-host2.example.com-error.log"
    ##CustomLog "logs/dummy-host2.example.com-access.log" common
##

As we can see within our httpd-vhosts.conf file, there is a lot of information that we can use, including examples and a direct link to the documentation ( http://httpd.apache.org/docs/2.4/vhosts/).

Configuring multiple virtual hosts

Let’s see how to create multiple virtual hosts. Firstly, we’ll need our localhost and another virtual host, for example a “google.com” virtualhost.

Let’s assume that we create WordPress themes too, and have a virtualhost for that.

httpd-vhosts.conf

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot D:\xampp\htdocs
<Directory "D:\xampp\htdocs">
</Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName examplelang.local
    DocumentRoot D:\xampp\htdocs\Exercise_langChange
<Directory "D:\xampp\htdocs\Exercise_langChange">
</Directory>
</VirtualHost>

<VirtualHost *:80>
	ServerName wthemes.local
	DocumentRoot D:\xampp\htdocs\wordpress_themes
	<Directory "D:\xampp\htdocs\wordpress_themes">
	</Directory>
</VirtualHost>

Specifying the directory is very important, don’t forget it. If you don’t specify the directory, the virtual hosts may not work as desired. The following are simple examples of virtual hosts. If you need to do something more elaborate, refer to the documentation.

In these cases, when I visit “localhost,” you’ll notice that the path is “D:\xampp\htdocs” in my case. This may vary depending on where you have XAMPP or the installation package you’re using.

Therefore, when you type “localhost” in the address bar, it refers to the htdocs folder. If everything is set up correctly in XAMPP, it will redirect you to the well-known “localhost/dashboard/” page.

If I enter “wthemes.local” in the address bar, it won’t search for that page on the internet. Instead, it will access the site located in “D:\xampp\htdocs\wordpress_themes.” While this site may exist on the internet, I have instructed my machine to treat that URL as “127.0.0.1” (my loopback address).

As a result, it will access that file and indicate that “wthemes.local” is located in “D:\xampp\htdocs\wordpress_themes,” and we will see the site hosted in that location.

The same concept applies if I have a “google.com” entry in the hosts file pointing to my localhost. It will direct to the folder specified in my httpd-vhosts.conf file.

For these reasons, some educational institutions tend to use programs that restore the machine to a previous state. These programs include DEEP FREEZE, Clean Slate, SmartShield, Dafturn Ofris, etc.

Understanding the concepts

Let’s create a fake “google.com” just to wrap up the concept: I will create a folder named fakegoogle with an “index.html” file in my htdocs folder. Then, I will add “google.com” to the hosts file and finally set up the virtual host.

[fakegoogle]index.html

<h1>Fake Google</h1>

hosts

127.0.0.1 google.com

httpd-vhosts.conf

<VirtualHost *:80>
	ServerName google.com
	DocumentRoot D:\xampp\htdocs\fakegoogle
	<Directory "D:\xampp\htdocs\fakegoogle">
	</Directory>
</VirtualHost>

Let’s see what we have here by running “google.com” in a browser:

As you can see, Edge allows this to happen, while Chrome, on the other hand, protects us against it and shows us the real page. This doesn’t mean it protects us from other types of fake pages. As I mentioned before, I used your own PC as an example to enter sites that require login information.

Something wrong?
If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Сервер терминалов на windows 2003
  • Можно ли сменить язык windows
  • Подождите пока windows настроит microsoft office 2007
  • Хост windows shell experience что это за процесс
  • Удаление логов windows 10