在 Apache2 上设置 IPv6

kgh*_*bln 4 ipv6 httpd.conf virtualhost apache-2.2

目前我有以下内容的“ports.conf”:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    Listen 443
    NameVirtualHost *:443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
Run Code Online (Sandbox Code Playgroud)

因此,要添加 IPv6,我必须将其更改为:

NameVirtualHost 91.64.99.215:80
Listen 91.64.99.215:80

NameVirtualHost [2a01:4f8:140:54e4::3]:80
Listen [2a01:4f8:140:54e4::3]:80

<IfModule mod_ssl.c>
    Listen 443
    NameVirtualHost 91.64.99.215:443
    NameVirtualHost [2a01:4f8:140:54e4::3]:443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 91.64.99.215:443
    Listen [2a01:4f8:140:54e4::3]:443
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这样对吗?

我担心的是,如果我这样做,所有虚拟主机都设置为

<VirtualHost *:80>
     ServerName www.domain.tld
     ServerAlias domain.tld
     DocumentRoot /www/domain
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

会发疯。如果不是这种情况,请执行

<VirtualHost *:80 [*]:80>
     ServerName www.domain.tld
     ServerAlias domain.tld
     DocumentRoot /www/domain
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

还应该通过 IPv6 使域可用吗?

我在这里有点困惑,无法从现有的“示例”中获得太多帮助,我们将不胜感激。

Mat*_*lis 12

您只需要将Listen指令更改为:

Listen [::]:80
Listen [::]:443
Run Code Online (Sandbox Code Playgroud)

而你的

NameVirtualHost *:80
<VirtualHost *:80>
Run Code Online (Sandbox Code Playgroud)

保持不变。

注意:netstat -tln将显示 apache 只在tcp6/上监听:::80;这是正常的(它也会像以前一样响应 IPv4)