У нас есть пара сложных определений виртуальных хостов в нашем файле httpd.conf.
Я имею в виду:
<VirtualHost .....>
....
</VirtualHost>
Под сложными я подразумеваю то, что они полны правил перезаписи и тому подобного.
Мы хотели бы привязать этот виртуальный хост к 2 IP-адресам. В настоящее время привязан только к одному.
Можно ли привязать виртуальный хост к 2 IP-адресам с помощью одного VirtualHost?
Было бы намного проще иметь один, если нам нужно внести изменения в будущем.
Вы можете просто поместить в определение несколько спецификаторов IP / Port, как описано в документация.
Пример:
<VirtualHost 1.2.3.4:80 2.3.4.5:80 1.2.3.4:8080>
DocumentRoot /path/to/wherever
ServerName example.com
# Stuff goes here
</VirtualHost>
Просто убедитесь, что у вас настроен Apache с достаточным количеством определений NameVirtualHost.
Вы могли бы использовать ...
Listen 80
<VirtualHost *:80>
...
</VirtualHost>
..для привязки к любому IP на сервере
Конечно:
Listen 80
<VirtualHost _default_:80>
...
</VirtualHost>
В качестве альтернативы рассмотрите возможность использования виртуальных хостов на основе имен.
Простой способ справиться с этим - извлечь общие биты в отдельный файл (например, /path/to/foo
) а потом Include
это в вашем vhost defs:
<Vitrualhost ...>
ServerName X
DocumentRoot Y
Include /path/to/foo
</Virtualhost>
<Vitrualhost ...>
ServerName Z
DocumentRoot A
Include /path/to/foo
</Virtualhost>
Примечание: не ставьте /path/to/foo
где-нибудь, что будет втянут подстановочным знаком Include
в другом месте.
Я бы, вероятно, выбрал именованные виртуальные хосты и внесу изменения в DNS, чтобы оба IP-адреса имели записи A с одинаковым именем хоста.