VirtualHost для одновременной работы с IPv4 и IPv6
Для настройки Apache2 VirtualHost для одновременной работы с IPv4 и IPv6, необходимо создать конфигурационные файлы VirtualHost для каждого протокола, используя соответствующие IP-адреса. В файлах конфигурации укажите как <VirtualHost *:80>
для IPv4, так и <VirtualHost [::]:80>
для IPv6, а также соответствующие директивы ServerName и DocumentRoot. Важно, чтобы в конфигурации не было конфликтов между настройками IPv4 и IPv6.Подробная инструкция:
Создайте два файла конфигурации VirtualHost:
Один для IPv4, например,
your_domain_ipv4.conf
.Один для IPv6, например,
your_domain_ipv6.conf
.
Эти файлы обычно размещаются в директории /etc/apache2/sites-available/
.
В файле конфигурации для 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>
В файле конфигурации для 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. Активируйте конфигурационные файлы:
Используйте команду
a2ensite your_domain_ipv4.conf
иa2ensite your_domain_ipv6.conf
.Отключите любой другой файл конфигурации по умолчанию, если он есть, используя
a2dissite 000-default.conf
.
2. Перезагрузите Apache:
Выполните команду
systemctl reload apache2
(илиservice apache2 reload
, в зависимости от вашей системы).
Важные моменты:
Убедитесь, что ваш сервер настроен для работы с IPv6. Это может потребовать настройки сетевых интерфейсов и брандмауэра.
Проверьте, что DNS-записи для вашего домена содержат как IPv4, так и IPv6 записи (A и AAAA записи).
Если у вас есть какие-либо существующие настройки VirtualHost, убедитесь, что они не конфликтуют с новыми настройками IPv4/IPv6.
Используйте команду
apachectl -S
для просмотра текущей конфигурации VirtualHost и проверки, что все настроено правильно.
Last updated