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

Как вы определяете блок IPv6 / 64 в виртуальном хосте Apache

Я пробовал каждую комбинацию, но все время получаю ошибку при перезапуске Apache. Кто-нибудь знает, как определить блок внутри виртуального хоста apache?

<VirtualHost "[2601:9ab4:48af:97::/64]:80" _default_:*>
<VirtualHost [2601:9ab4:48af:97::/64]:80 _default_:*>
<VirtualHost [::/64]:80 _default_:*>
<VirtualHost [::]/64:80 _default_:*>
<VirtualHost [*:/64]:80 _default_:*>

TL; DR; в директивах VirtualHost нельзя использовать нотацию CIDR или диапазоны IP-адресов.


Apache настроен для ответа на запросы:

  • один конкретный IP-адрес и номер порта с Listen директива
    Либо адреса IPv6

    Listen [2601:9ab4:48af:97::1]:80
    

    или IPv4-адрес

    Listen 127.0.0.1:80
    
  • несколько конкретных IP-адресов и номеров портов путем добавления нескольких Listen директивы, по одной для каждого уникального ip-адреса и номера порта

    Listen [2601:9ab4:48af:97::1]:80
    Listen [2601:9ab4:48af:97::2]:80
    Listen [2601:9ab4:48af:97::3]:80
    Listen 127.0.0.1:80
    Listen 127.0.0.2:81
    
  • каждый IP-адрес настраивается на хосте путем установки только номера порта:

    Listen 80
    Listen 443
    

Насколько я знаю, вы не можете использовать сетевую маску или определять диапазон IP-адресов в директиве Listen.

После настройки apache httpd принимать входящие соединения с помощью указанной выше директивы Listen вы можете необязательно создавать записи VirtualHost.

Затем вы можете создать Виртуальные хосты на основе IP (где вы снова ограничены определенным IP-адресом), виртуальные хосты на основе имен где Host: заголовок с именем домена DNS в заголовках HTTP-запроса будет обрабатываться VirtualHost с этим именем хоста или шаблоном имени хоста в ServerName или ServerAliasдиректива и VirtualHost по умолчанию (обычно первая запись VirtualHost), которая обрабатывает все запросы, которые не соответствуют более конкретному виртуальному хосту на основе IP или имени. Видеть: https://httpd.apache.org/docs/2.4/vhosts/details.html

Во-первых, я думаю, вам следует послушать комментаторов и ограничить свой виртуальный хост одним IP-адресом. Даже если вы хотите попытаться послушать более одного, может быть, сначала попробуйте заставить работать один.

Во-вторых, я не думаю, что вам нужны кавычки вокруг IP-адреса.

В-третьих, пробовали ли вы какие-либо из них без обозначения CIDR "/ 64"? На примере второй строки:

<VirtualHost [2601:9ab4:48af:97::]:80>

Я ничего не вижу в нотации CIDR в документации Apache:

https://httpd.apache.org/docs/2.4/mod/core.html#virtualhost