У меня есть несколько 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>