Назад | Перейти на главную страницу

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>

Буду признателен за помощь!

Не проверено. Я предположил, что каждое ваше имя хоста находится на одном 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>

Насколько я могу судить, ваша ошибка заключалась в том, что вы не указали ServerName первому виртуальному хосту.

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 В разделе config есть ServerName или ServerAlias вариант вместе с DocumentRoot или вам следует убедиться, что ваш конкретный VirtualHost разделы config появляются первыми в файле конфигурации перед менее конкретными (т.е. сами 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>