Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wptelegram domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-pagenavi domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114

Notice: Функция _load_textdomain_just_in_time вызвана неправильно. Загрузка перевода для домена kirki была запущена слишком рано. Обычно это индикатор того, что какой-то код в плагине или теме запускается слишком рано. Переводы должны загружаться при выполнении действия init или позже. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114
Apache: примеры создания VirtualHost

Apache: примеры создания VirtualHost

Что такое VirtualHost можно почитать на Wiki.

Все примеры приведены в системе FreeBSD 8.2 и Apache 2.2, но подойдут для любой другой ОС (учтите только другие пути к файлам конфигурации).

В статье не будут рассмотрены вопросы создания и настройки доменов и субдоменов на DNS — это совсем другая тема. Если вы не используете свой собственный DNS и не знаете как настроить домен — проще всего воспользоваться этой>>> ссылкой или спросить совета у вашего регистратора доменного имени.

Для примеров используются следующие данные:

2 IP-адреса:

77.120.106.40
77.120.106.52

2 домена и 1 субдомен:

it-news.in.ua
website.co.ua
vhost1.website.co.ua

Для простоты, все пути к служебным каталогам остаются по-умолчанию, т.е. такими, какие они были после установки Apache:

ServerRoot «/usr/local»
DocumentRoot «/usr/local/www/apache22/data»

Если планируется создание только одного VirtualHost-а, то все записи можно производить прямо в файле /usr/local/etc/apache22/httpd.conf. Но правильнее будет все настройки виртуалов хранить в файле /usr/local/etc/apache22/httpd.conf. Для этого, в конце файла/usr/local/etc/apache22/httpd.conf раскомментируйте строку:

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

Запуск нескольких name-based виртуалов на одном IP-адресе

#Укажем Apache слушать порт 80
Listen 80

#Слушать запросы к виртуалам на всех IP-адресах:
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot www/apache22/data/website.co.ua
ServerName www.example.com
</VirtualHost>

<VirtualHost *:80>
DocumentRoot www/apache22/data/it-news.in.ua
ServerName www.example.org
</VirtualHost>

В этом примере website.co.ua находится первым в списке виртуалхостов, поэтому в случае, если к серверу придет запрос без определённого ServerName, то будет показано содержимое website.co.ua.

Если вы хотите, то можно указать реальный IP-адрес сервера, в таком случае параметр VirtualHostдолжен совпадать с NameVirtualHost:

NameVirtualHost 77.120.106.40
<VirtualHost 77.120.106.40:80>

</VirtualHost>

Но, как правило, используется параметр *, обозначающий любой IP-адрес. Это полезно, например, если вы используете услугу типа No-Ip, позволяющую привязать динамический IP-адрес к домену.

Name-based хосты на сервере с несколькими IP-адресами

У сервера есть два IP-адреса: 77.120.106.40 и 77.120.106.52.  Запустим 1 «главный» сайт, и несколько «вторичных»:

Listen 80
# Это «главный» сайт, работающий на IP-адресе 77.120.106.40
ServerName website.co.ua
DocumentRoot www/apache22/data/website.co.ua

# А это «вторичные» сайты:
NameVirtualHost 172.20.30.50
<VirtualHost 77.120.106.52>
DocumentRoot www/apache22/data/vhost1.website.co.ua
ServerName vhost1.website.co.ua
</VirtualHost>

<VirtualHost 77.120.106.52>
DocumentRoot www/apache22/data/it-news.in.ua
ServerName it-news.in.ua
</VirtualHost>

Все запросы на адреса, отличные от 77.120.106.52 будут переданы «главному» сайту. Все запросы к77.120.106.52 с неуказанным HostName будут переданы к website.co.ua.

Обслуживание одного виртуала по разным IP-адресам (например, локальной и внешней сети)

У сервера есть две сети с двумя разными адресами — 77.120.106.40 (внешняя сеть) и 192.168.0.1(внутренняя сеть). Из мира адрес  website.co.ua направлен на 77.120.106.40, а изнутри имя serverнаправлено на 192.168.0.1. По обоим запросам, как из внешней сети, так и из внутренней, сервер будет выдавать содержимое одного и того же виртуалхоста:

NameVirtualHost 192.168.0.1
NameVirtualHost 77.120.106.40

<VirtualHost 192.168.0.1 77.120.106.40>
DocumentRoot www/apache22/data/website.co.ua
ServerName website.co.ua
ServerAlias server
</VirtualHost>

Обслуживание разных сайтов на разных портах

Можно обрабатывать запросы к разным  и/или одинаковым доменам на разные порты, выдавая разное содержимое:

Listen 80
Listen 8080

NameVirtualHost 77.120.106.40:80
NameVirtualHost 77.120.106.40:8080

#по запросу website.co.ua и стандартному http-порту 80 выдаем
#содержимое каталога /usr/local/www/apache22/data/www/website.co.ua-80
<VirtualHost 77.120.106.40:80>
ServerName website.co.ua
DocumentRoot www/apache22/data/www/website.co.ua-80
</VirtualHost>

#по запросу website.co.ua и не-стандартному http-порту 8080 выдаем
#содержимое каталога /usr/local/www/apache22/data/www/website.co.ua-8080
<VirtualHost 77.120.106.40:8080>
ServerName website.co.ua
DocumentRoot www/apache22/data/www/website.co.ua-8080
</VirtualHost>

#то же самое, на том же сервере, но для домена it-news.in.ua
<VirtualHost 77.120.106.40:80>
ServerName it-news.in.ua
DocumentRoot www/apache22/data/www/it-news.in.ua-80
</VirtualHost>

<VirtualHost 77.120.106.40:8080>
ServerName it-news.in.ua
DocumentRoot www/apache22/data/www/it-news.in.ua-8080
</VirtualHost>

IP-based виртуалхосты

У сервера есть два IP-адреса и два домена: it-news.in.ua с адресом 77.120.106.40 и website.co.uaс адресом 77.120.106.52:

Listen 80

<VirtualHost 77.120.106.40>
DocumentRoot www/apache22/data/www/it-news.in.ua
ServerName it-news.in.ua
</VirtualHost>

<VirtualHost 77.120.106.52>
DocumentRoot www/apache22/data/www/website.co.ua
ServerName website.co.ua
</VirtualHost>

Смешанные port-based и ip-based виртуалхосты

Listen 77.120.106.40:80
Listen 77.120.106.40:8080
Listen 77.120.106.52:80
Listen 77.120.106.52:8080

<VirtualHost 77.120.106.40:80>
DocumentRoot www/apache22/data/www/website.co.ua-80
ServerName website.co.ua
</VirtualHost>

<VirtualHost 77.120.106.40:8080>
DocumentRoot www/apache22/data/www/website.co.ua-8080
ServerName website.co.ua
</VirtualHost>

<VirtualHost 77.120.106.52:80>
DocumentRoot www/apache22/data/www/it-news.in.ua-80
ServerName it-news.in.ua
</VirtualHost>

<VirtualHost 77.120.106.52:8080>
DocumentRoot www/apache22/data/www/it-news.in.ua-8080
ServerName it-news.in.ua
</VirtualHost>

В статье использовалась документация с официального сайта веб-сервера Apache.