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

ServerName с IPv6 с Apache

Я в основном пытаюсь перенаправить каждый запрос с: 443 на: 443. Я нашел способ сделать это, и он работает довольно хорошо, как только посетитель отклоняет предупреждение SSL (мой сертификат, конечно, недействителен для моего IP-адреса), он перенаправляется правильно:

<VirtualHost *:443>
    SSLEngine off
    ServerAdmin hi@mom.eu
    ServerName 11.11.11.11
    Redirect Permanent / https://domain.eu/
</VirtualHost>

Но сегодня я включил IPv6 на своем сервере, поэтому я бы тоже хотел его перенаправить, но проблемы начинаются здесь.

<VirtualHost *:443>
    SSLEngine off
    ServerAdmin hi@mom.eu
    ServerName [ff:ff:8:ff::1]         //(with or without '[]')
    Redirect Permanent / https://domain.eu/
</VirtualHost>

Это просто не сработает. Я не уверен, что это из-за отсутствия поддержки IPv6 в аргументе ServerName, но я как бы застрял.

Есть ли у вас какие-либо идеи ? Спасибо !

Вы пробовали это?

Listen [ff:ff:8:ff::1]:80;
<VirtualHost [ff:ff:8:ff::1]:443>
    SSLEngine off
    ServerAdmin hi@mom.eu
    Redirect Permanent / https://domain.eu/
</VirtualHost>

Обработать запрос в зависимости от адреса прослушивания.

Во-первых, '[' и ']' недопустимы для соглашения об именах DNS, которое должно быть выполнено в значении ServerName. Во-вторых, ':' тоже недействителен - поэтому попробуйте использовать его без этих символов или используйте имя хоста - второй способ лучше.

Насколько мне известно, директива ServerName не допускает адреса IPv6.

Он не принимает скобки и двоеточие в адресе IPv6.

Этот формат действителен только для директив Listen, NameVirtualHost и VirtualHost.

В зависимости от вашей конфигурации (например, если вы обслуживаете несколько доменов в одной установке Apache), вы можете попробовать следующее.

Создайте виртуальный хост, как обычно, и вместо определения ServerName с адресом IPv6 определите его с правильным именем DNS (которое на самом деле не обязательно должно существовать).
Теперь уловка состоит в том, чтобы поместить этот виртуальный хост поверх всех остальных виртуальных хостов для этого IP: порта.

Таким образом, когда пользователь делает запрос для домена (или IP в вашем случае), который не обрабатывается Apache, он будет пытаться обслужить запрос, используя первый VirtualHost, который он найдет для этого IP: порта.