Используя только локальные меры (/etc/hosts
вместо DNS), я обнаружил, что это действительно может работать.
Сначала измените файл /etc/hosts
, чтобы он соответствовал желаемым названиям веб-сайтов.( www.example.com ) и целевой IP-адрес (192.168.1.1).Я использовал свой локальный IP-адрес.
IPAddress Hostname Alias
----------- -------------------------- ------------------
192.168.1.1 www.example.com example.com
192.168.1.1 www.john.example.com john.example.com
192.168.1.1 www.jane.example.com jane.example.com
Ваш веб-браузер проверит ваш /etc/hosts
файл , прежде чем заглянет во всемирную паутину.
Затем просмотрите все ваши конфигурационные файлы Apache (httpd.conf
, apache2.conf
, ports.conf
, conf.d/*
) и убедитесь, что в точно один файл, команда NameVirtualHost *:80
выдан (это не обязательно должен быть порт :80
, но если он будет выпущен более одного раза, вы получите эту проблему ).Мой был выпущен в /etc/apache2/ports.conf
, поэтому, если нужно, поместите свой там.Наконец, обновите свой файл конфигурации Apache (у меня был /etc/apache2/sites-available/default
) примерно так.
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
ServerName www.john.example.com
ServerAlias john.example.com
DocumentRoot /var/www/john
</VirtualHost>
<VirtualHost *:80>
ServerName www.jane.example.com
ServerAlias jane.example.com
DocumentRoot /var/www/jane
</VirtualHost>
В качестве последнего шага вам может понадобиться добавить сайты в Apache, выполнив следующие команды (этот шагне обязательно, если вы передаете все сайты в sites-available/default
, а не в отдельные файлы для отдельных сайтов).
# a2ensite www.example.com
# a2ensite www.john.example.com
# a2ensite www.jane.example.com
После этого john.example.com
перейдет к /var/www/john
.Этот каталог будет действовать как корневой каталог, и john
больше не будет иметь доступа к www
, и, следовательно, не будет иметь доступа к /var/www/jane
.
Аналогично, после этого, jane.example.com
перейдет к /var/www/jane
.Этот каталог будет действовать в качестве корневого каталога, и jane
больше не будет иметь доступа к www
и, следовательно, не будет иметь доступа к /var/www/john
.
При отключенных символических ссылках --byпо умолчанию - ни один каталог не сможет получить доступ друг к другу