Apache NameVirtualHost с доменом и IP
У меня есть несколько IP-адресов, которые я пытаюсь настроить в Apache2. Я пытался искать вокруг, но, кажется, я просил слишком много.
Я хочу направить каждый прямой запрос для каждого IP (например, http://155.155.155.100/) на выделенный DocumentRoot (например, /www/155.155.155.00/).
В то время как домены, которые разрешают к тому же IP (155.155.155.100), будут иметь отдельный DocumentRoot. Пока что у Apache нет проблем с маршрутизацией IP-адресов, однако он не любит делить их между доменами.
Моя настройка пока (не работает, IP и домен перенаправляют на /www/155.155.155.101 - они не разделены):
NameVirtualHost 155.155.155.100
NameVirtualHost 155.155.155.101
NameVirtualHost 155.155.155.102
NameVirtualHost 155.155.155.103
<VirtualHost 155.155.155.101>
DocumentRoot /www/155.155.155.101
</VirtualHost>
<VirtualHost 155.155.155.101>
ServerName www.domain1.com
ServerAlias www.domain1.com
DocumentRoot /www/domain1.com
</VirtualHost>
Буду признателен за помощь!
2 ответа
Непроверенные. Я предположил, что ваши имена хостов были на одном IP; если нет, вы можете использовать один NameVirtualHost *
вместо этого и совпадают на <VirtualHost *>
везде.
NameVirtualHost 155.155.155.100:80
NameVirtualHost 155.155.155.101:80
NameVirtualHost 155.155.155.102:80
NameVirtualHost 155.155.155.103:80
<VirtualHost 155.155.155.100:80>
ServerName 155.155.155.100
DocumentRoot /www/155.155.155.100
</VirtualHost>
<VirtualHost 155.155.155.100:80>
ServerName www.domain0.com
DocumentRoot /www/domain0.com
</VirtualHost>
<VirtualHost 155.155.155.101:80>
ServerName 155.155.155.101
DocumentRoot /www/155.155.155.101
</VirtualHost>
<VirtualHost 155.155.155.101:80>
ServerName www.domain1.com
DocumentRoot /www/domain1.com
</VirtualHost>
Насколько я могу судить, ваша ошибка заключалась в том, что вы не указали имя сервера первому виртуальному хосту.
Apache использовал обратный IP-адрес, который получил запрос, который я ожидаю, был www.domain1.com; поэтому ваш второй виртуальный хост был скрыт.
Проблема в том, что ваш первый IP-адрес только строфа,
<VirtualHost 155.155.155.101>
DocumentRoot /www/155.155.155.101
</VirtualHost>
не включает в себя ServerName
или же ServerAlias
в то время как тот, который следует за этим с доменом, делает. Apache попытается сопоставить входящее соединение с первым VirtualHost
раздел конфигурации, который соответствует. Поскольку соединение, использующее домен, который разрешает IP, будет соответствовать IP без какого-либо дополнительного уточнения (ServerName
или же ServerAlias
) он привык к обработке соединения.
Поэтому вы должны либо убедиться, что каждый VirtualHost
Конфигурационный раздел имеет ServerName
или же ServerAlias
вариант вместе с DocumentRoot
или вы должны убедиться, что ваш более конкретный VirtualHost
разделы конфигурации появляются первыми в файле конфигурации, а не менее специфичные (т.е. сами IP-адреса с или без ServerName
вариант.
Таким образом, следующее должно работать так, как вы ожидали:
NameVirtualHost 155.155.155.100
NameVirtualHost 155.155.155.101
NameVirtualHost 155.155.155.102
NameVirtualHost 155.155.155.103
<VirtualHost 155.155.155.101>
ServerName www.domain1.com
ServerAlias www.domain1.com
DocumentRoot /www/domain1.com
</VirtualHost>
<VirtualHost 155.155.155.101>
DocumentRoot /www/155.155.155.101
</VirtualHost>