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

Определение виртуального хоста Apache 1, прослушивающее 2 ips - как?

У нас есть пара сложных определений виртуальных хостов в нашем файле 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 с одинаковым именем хоста.