Примеры настройки виртуальных хостов
Ниже приведены несколько примеров настройки виртуальных хостов с общим ip-адресом в Apache (так называемые name-based виртуальные хосты). Подробнее о типах виртуальных хостов в Apache.
Перед настройкой виртуальных хостов нам необходимо указать все TCP порты, которые мы собираемся использовать. Для этого нам необходимы директивы Listen и NameVirtualHost.
# Прослушиваем 80 порт
Listen 80
# Прослушиваем 443 порт
Listen 443
# Эта директива сообщает серверу, что на 80 порту
# будет использоваться name-based виртуальные хосты
NameVirtualHost *:80
Базовая настройка VirtualHost: порт 80, пользовательские логи
<VirtualHost *:80>
ServerName www.foo.com
# Чтобы данный хост обслуживал еще и другие имена,
# снимите комментарий со след. строки
# ServerAlias foo.com www.bar.com bar.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
</VirtualHost>
Настройка на 80 порту с обслуживанием нескольких виртуальных хостов
<VirtualHost *:80>
ServerName www.foo.com
# Чтобы данный хост обслуживал еще и другие имена, снимите комментарий со след. строки
# ServerAlias foo.com www.bar.com bar.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
</VirtualHost>
<VirtualHost *:80>
ServerName mail.foo.com
DocumentRoot /var/www/mail.foo.com/htdocs
CustomLog /var/log/apache/mail.foo.com-access.log combined
ErrorLog /var/log/apache/mail.foo.com-error.log
</VirtualHost>
Настройка виртуального хоста с пользовательскими логами и идентификацией
<VirtualHost *:80>
ServerName www.foo.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
AuthUserFile /var/www/www.foo.com/.htpasswd
AuthType Basic
AuthName “Authorised Users Only”
Require valid-user
</VirtualHost>
Виртуальный хост с SSL и пользовательскими логами
<VirtualHost _default_:443>
# Только один виртуальный хост для этого порта!
# Name-based виртуальные хосты не работают с SSL
ServerName www.foo.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
SSLEngine On
</VirtualHost>