На моем локальном компьютере у меня есть несколько именованных виртуальных хостов, настроенных в apache, все на порту 80.
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/site1"
ServerName http://site1.local
<Directory "site1" >
Options +Includes
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/site2"
ServerName http://site2.local
<Directory "site2" >
Options +Includes
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
Для тестирования на мобильных устройствах мне нужно, чтобы эти сайты были доступны через IP-адрес моей машины, и в этом случае по умолчанию будет объявлен первый виртуальный хост. Я предполагаю, что мне нужно настроить что-то с прослушиванием на разных портах, чтобы иметь возможность доступа к нескольким виртуальным хостам на одном IP-адресе, но я пробовал довольно много вариантов и не могу получить его, поэтому использование порта работает удаленно но имя по-прежнему работает локально.
Как мне настроить несколько виртуальных хостов, которые имеют имена и прослушиваются на разных портах. Это вообще возможно?
В конце концов я нашел ответ.
Хитрость в том, чтобы использовать
<VirtualHost *:80 *:otherportnumber>
Таким образом, имя сервера работает (потому что прослушивание: 80) и IP-адрес + номер порта работают (потому что никакой другой именованный хост не прослушивает этот номер порта)
В ServerName
предложение должно выглядеть так:
ServerName test.example.org
Остальная часть вашей конфигурации подходит для нескольких виртуальных хостов на одном IP и одном порте. Для разных IP-адресов ответ womble правильный.
Конечно, вы просто указываете IP-адрес в <VirtualHost>
тег. Это означает, что вам нужно иметь отдельные IP-адреса для каждого виртуального хоста, но если вам нужно различать IP-адреса, они уже будут выделены.