Não é possível fazer um VirtualHost funcionando com o ipv6

3

Eu tenho um site servido pelo apache. Funciona com o IPv4, mas não com o IPv6. Eu tenho um erro 500.

Aqui está o meu arquivo ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
NameVirtualHost *:80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

E meu VHost:

<VirtualHost *:80 [::]:80>
DocumentRoot "/var/www/html/mysite.ca/www.mysite.ca"
ServerName mysite.ca
<Directory "/var/www/html/mysite.ca/www.mysite.ca">
allow from all
Options +Indexes
</Directory>
ServerAlias www.mysite.ca
</VirtualHost>

Quando faço netstat-tlnpt , tenho isto:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3577/master
tcp        0      0 0.0.0.0:453             0.0.0.0:*               LISTEN      4484/perl
tcp        0      0 0.0.0.0:360             0.0.0.0:*               LISTEN      3254/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3307/mysqld
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      2923/vsftpd
tcp6       0      0 ::1:25                  :::*                    LISTEN      3577/master
tcp6       0      0 :::443                  :::*                    LISTEN      7240/apache2
tcp6       0      0 :::360                  :::*                    LISTEN      3254/sshd
tcp6       0      0 :::80                   :::*                    LISTEN      7240/apache2

Parece que o apache já está ouvindo o endereço IPv6.

Eu tentei adicionar:

Listen [::]:80
Listen [::]:443

Para o meu arquivo de porta, mas tenho este resultado quando reinicio o apache:

(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:443

Eu tentei alterar wildcars por endereço estático e tenho o mesmo problema.

Eu tenho outros sites que trabalham com o IPv6 no mesmo servidor. Este é o único que não funciona.

O que posso fazer?

    
por Dougui 07.12.2016 / 18:28

3 respostas

7

Verifique se o apache2 está sendo totalmente encerrado. Possivelmente, o que quer que esteja gerenciando serviços, não sabe sobre uma cópia lançada manualmente em segundo plano. (execute o netstat quando ele deve ser parado e certifique-se de que nada ainda esteja ouvindo)

Dependendo da sua versão do Apache, você pode não precisar também do NameVirtualHost. Consulte o link

Se você está recebendo um erro 500, então algo está definitivamente escutando na porta e respondendo. Isso deve ser registrado no seu error.log. Caso contrário, talvez seja necessário ajustar as opções de registro para incluí-lo. Não vejo nada indicando se você está executando o apache2.2 ou 2.4 e a configuração de registro é diferente entre os dois.

EDIT: Veja esta página sobre LogLevel link

    
por 10.12.2016 / 03:29
3

Verifique se você tem Listen uma vez por porta por IP por configuração completa por servidor, talvez comente os que você ciente até que ele comece sem reclamar e veja se ele ainda está iniciando na porta 80/443

para ipv6 e ipv4, você só precisa

listen 80
listen 443 https

find /etc/httpd/ | xargs grep -sniH "listen"

    
por 10.12.2016 / 05:00
1

Eu vejo isso na sua saída netstat:

tcp6 0 0 :::443 :::* LISTEN 3254/sshd

Isso significa que você tem um processo ssh escutando sua porta 443 no IPv6 e, na verdade, o Apache não pode ligar a essa porta:

(98)Address already in use: AH00072: make_sock: could not bind to address [::]:443

    
por 09.12.2016 / 18:57