hosts virtuais nginx não funcionam depois de ativar o IPv6

1

Acabei de ativar o IPv6 no meu servidor nginx 1.8.0 baseado no Debian Jessie. Para fazer isso, eu editei meu Virtual Host-Config:

server {
    listen 80;
    listen [2001:1608:10:160:34::2]:80;
    server_name dominicpratt.de www.dominicpratt.de;
    return 301 https://dominicpratt.de$request_uri;
}

server {
    listen 443;
    listen [2001:1608:10:160:34::2]:443;
    server_name dominicpratt.de www.dominicpratt.de;
    root /var/www/dominicpratt.de;

    index index.html index.htm index.php;
    access_log /var/log/nginx/dominicpratt.de_access.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/dominicpratt.de/combined.pem;
    ssl_certificate_key /etc/nginx/ssl/dominicpratt.de/wildcard.key;

    location / {
            try_files $uri $uri/ /index.php?q=$request_uri;
    }

    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm-www.sock;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 365d;
    }

}

Agora meu site dominicpratt.de está funcionando bem, mas meus subdomínios não estão. Eles estão redirecionando para dominicpratt.de - exemplo: rss.dominicpratt.de e a seguinte configuração:

server {
    listen 80;
    listen [2001:1608:10:160:34::5]:80;
    server_name rss.dominicpratt.de;
    return 301 https://rss.dominicpratt.de$request_uri;
}

server {
    listen 443;
    listen [2001:1608:10:160:34::5]:443;
    server_name rss.dominicpratt.de;
    root /var/www/rss.dominicpratt.de;

    index index.html index.htm index.php;
    access_log /var/log/nginx/rss.dominicpratt.de_access.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/dominicpratt.de/combined.pem;
    ssl_certificate_key /etc/nginx/ssl/dominicpratt.de/wildcard.key;

    location / {
            try_files $uri $uri/ /index.php?q=$request_uri;
    }

    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm-www.sock;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
    }
}

Não consigo alcançar o link e todos os outros subdomínios. Se eu excluir ou comentar as linhas de escuta do IPv6 no bloco do servidor, ele funcionará exatamente como deveria.

    
por Dominic 19.11.2015 / 14:38

2 respostas

0

Tente adicionar ipv6only=on à sua diretiva listen para o endereço IPv6 da seguinte forma:

listen [2001:1608:10:160:34::5]:80 ipv6only=on;
...
listen [2001:1608:10:160:34::5]:443 ipv6only=on;

O fato de você ter especificado o endereço IPv6 na diretiva de escuta não desativa o IPv4 por padrão.

    
por 24.11.2015 / 21:14
0

O Nginx 1.8.0 tinha um bug [1] (corrigido no 1.8.1) que ativava o SPDY / h2 por padrão. Com os navegadores http / 2, tente abrir apenas uma conexão por servidor [2]. O Firefox faz isso de uma maneira muito agressiva [3]. Ele reutiliza as conexões IPv6 entre nomes de host, mesmo que os endereços IPv6 não correspondam (mas correspondências de endereços IPv4 e correspondências de certificados). Com certificados wildcard, isso pode levar ao problema observado [4], onde o conteúdo do domínio errado é exibido.

O navegador, neste caso, está tentando desobstruir os subdomínios para otimizar a velocidade pensando erroneamente que os diferentes subdomínios foram implementados apenas para otimizar a velocidade em http / 1 (ou seja, usando stattic1.example.com e static2.example.com para obter mais conexões do servidor em paralelo).

O problema pode ser resolvido por A) usando certificados diferentes para os domínios, por B) usando o mesmo endereço IPv6 para os domínios ou C) enviando o código de status http para o número 421 [5] para as solicitações erradas.

por 20.02.2018 / 11:46