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>
Другие вопросы по тегам