VirtualHost для одновременной работы с IPv4 и IPv6

Для настройки Apache2 VirtualHost для одновременной работы с IPv4 и IPv6, необходимо создать конфигурационные файлы VirtualHost для каждого протокола, используя соответствующие IP-адреса. В файлах конфигурации укажите как <VirtualHost *:80> для IPv4, так и <VirtualHost [::]:80> для IPv6, а также соответствующие директивы ServerName и DocumentRoot. Важно, чтобы в конфигурации не было конфликтов между настройками IPv4 и IPv6.Подробная инструкция:

  1. Создайте два файла конфигурации VirtualHost:

    • Один для IPv4, например, your_domain_ipv4.conf.

    • Один для IPv6, например, your_domain_ipv6.conf.

Эти файлы обычно размещаются в директории /etc/apache2/sites-available/.

  1. В файле конфигурации для IPv4 (your_domain_ipv4.conf):

    • Укажите VirtualHost *:80 или VirtualHost <IPv4-адрес>:80, если нужно привязать к конкретному IPv4-адресу.

    • Укажите ServerName, например, ServerName yourdomain.com.

    • Укажите DocumentRoot, например, DocumentRoot /var/www/your_domain.

    • Добавьте другие необходимые директивы, такие как DirectoryIndex, ErrorLog, CustomLog и т.д.

Код

   <VirtualHost *:80>
       ServerAdmin webmaster@yourdomain.com
       ServerName yourdomain.com
       DocumentRoot /var/www/your_domain
       <Directory /var/www/your_domain>
           Options Indexes FollowSymLinks
           AllowOverride None
           Require all granted
       </Directory>
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
   </VirtualHost>
  1. В файле конфигурации для IPv6 (your_domain_ipv6.conf):

    • Укажите VirtualHost [::]:80 для прослушивания всех IPv6-адресов. Если нужно привязать к конкретному IPv6-адресу, используйте его в этой директиве.

    • Укажите ServerName, например, ServerName yourdomain.com.

    • Укажите DocumentRoot, например, DocumentRoot /var/www/your_domain.

    • Дублируйте другие директивы из файла конфигурации IPv4, чтобы обеспечить согласованность настроек.

Код

   <VirtualHost [::]:80>
       ServerAdmin webmaster@yourdomain.com
       ServerName yourdomain.com
       DocumentRoot /var/www/your_domain
       <Directory /var/www/your_domain>
           Options Indexes FollowSymLinks
           AllowOverride None
           Require all granted
       </Directory>
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
   </VirtualHost>
  1. 1. Активируйте конфигурационные файлы:

    • Используйте команду a2ensite your_domain_ipv4.conf и a2ensite your_domain_ipv6.conf.

    • Отключите любой другой файл конфигурации по умолчанию, если он есть, используя a2dissite 000-default.conf.

  2. 2. Перезагрузите Apache:

    • Выполните команду systemctl reload apache2 (или service apache2 reload, в зависимости от вашей системы).

Важные моменты:

  • Убедитесь, что ваш сервер настроен для работы с IPv6. Это может потребовать настройки сетевых интерфейсов и брандмауэра.

  • Проверьте, что DNS-записи для вашего домена содержат как IPv4, так и IPv6 записи (A и AAAA записи).

  • Если у вас есть какие-либо существующие настройки VirtualHost, убедитесь, что они не конфликтуют с новыми настройками IPv4/IPv6.

  • Используйте команду apachectl -S для просмотра текущей конфигурации VirtualHost и проверки, что все настроено правильно.

Last updated