Por que minhas configurações são herdadas para o bloco do subdomínio?

2

Eu uso o nginx com um certificado de caractere curinga ssl assim:

/etc/nginx/sites-enabled/example.com

server {
    listen      443 default_server ssl;
    server_name 192.168.0.1 example.com;

    include /etc/nginx/ssl.conf;

    error_log   /var/log/nginx/example.com.error.ssl.log;
    access_log  /var/log/nginx/example.com.access.ssl.log;

    root /var/www/example.com/;
    index index.html;

    location / {
        alias /var/www/example.com/example.com/;
    }
}

server {
    listen      80;
    server_name 192.168.0.1 example.com;
    return      301 https://$server_name$request_uri;
}

/etc/nginx/ssl.conf

O ssl.conf incluído é assim:

ssl_certificate     /etc/nginx/ssl/example.com/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/nginx/ssl/example.com/example.com_dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'AES256+EECDH:AES256+EDH';
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;

Meu bloco de servidores para o subdomínio tem esta aparência:

/etc/nginx/sites-enabled/blog.example.com

server {
    listen      443;
    server_name blog.example.com;

    error_log   /var/log/nginx/blog.example.com.error.ssl.log;
    access_log  /var/log/nginx/blog.example.com.access.ssl.log;

    root /var/www/blog.example.com/;
    index index.html;

    location / {
        proxy_pass http://localhost:2368/;
        proxy_set_header Host $host;
        proxy_buffering off;
        autoindex  off;
    }
}

server {
    listen      80;
    server_name blog.example.com;
    return      301 https://$server_name$request_uri;
}

link por que está funcionando e porque blog.example.com está herdando as configurações de example.com mesmo que o ssl.conf não esteja incluído nesse bloco de servidor.

Não consegui encontrar nada na documentação do nginx sobre como herdar configurações do default_server.

É apenas o comportamento esperado com um certificado curinga?

Obrigado!

    
por mediocre 22.12.2014 / 19:41

2 respostas

1

Mesmo que você não mostre o principal nginx.conf , suspeito que seu ssl.conf esteja incluído no nível http na configuração do nginx.

Praticamente todas as configurações de nível http são herdadas para server blocks em nginx. Consulte o link para obter mais informações sobre como a herança de diretivas funciona no nginx.

    
por 22.12.2014 / 23:17
-1

Este é, na verdade, o comportamento esperado de acordo com a documentação :

The SSL connection is established before the browser sends an HTTP request and nginx does not know the name of the requested server. Therefore, it may only offer the default server’s certificate.

Você pode evitar isso usando diferentes IPs :

It should be kept in mind that due to the HTTPS protocol limitations virtual servers should listen on different IP addresses otherwise the first server’s certificate will be issued for the second site.

    
por 13.09.2017 / 23:03