Nginx sempre reescrevendo para ssl mesmo em sites não-ssl

1

Eu tenho uma página example.com, que tem configuração de certificados SSL e tudo está funcionando bem. Aqui está a parte ssl da configuração:

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

server {
    listen  443 default_server;
    server_name example.com www.example.com;

  # strenghen ssl security
  ssl_certificate /some/ssl/files.crt;
  ssl_certificate_key /some/ssl/files.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;  
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  # Add headers to serve security related headers
  add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
  add_header X-Content-Type-Options nosniff;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  add_header X-Robots-Tag none;

Quando eu navego no example.com, tudo o que eu recebo é a ssl, então tudo está funcionando como esperado.

Então, quando eu navego no link 'que tem a seguinte configuração do servidor, o nginx sempre o reescreve para link que me leva de volta ao link (porque o dl.example.com não está configurado para usar SSL e o link é o servidor padrão). Mas por que? Esta página não é nem mesmo configurada para usar qualquer tipo de ssl, mas funciona? Meu palpite é que as reescritas ssl de 'example.com' são de alguma forma armazenadas em cache e também são válidas para 'dl.example.com'. É de alguma forma possível dizer ao nginx para evitar qualquer cache e nem sequer considerar o uso de qualquer tipo de ssl para um vhost em particular?

server {
    listen 80;
    server_name dl.example.com;

    root /var/www/dl.example.com/files/;

    location / {
        autoindex on;
    }
}
    
por Flatron 13.11.2015 / 17:57

1 resposta

2

Às vezes, as coisas estão estrelando na sua cara, mas você não as vê ... A solução é remover o sinalizador de cabeçalho http destacado dos meus sites raiz vhost abaixo:

[...]** add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";**[...]

O que isso basicamente faz é bastante óbvio, uma vez que você visita o site principal 'example.com', seu navegador armazenará em cache os cabeçalhos http deste domínio e nós estritamente forçamos o uso de segurança de transporte rígida, incluindo subdomínios que entramos nesta questão ( Que uma vez que você visitou o lado principal, todos os subdomínios, independentemente de sua configuração, foram forçados a usar ssl). Depois de remover este sinalizador de cabeçalho e reiniciar o nginx, tudo está funcionando bem novamente!

Espero que esta resposta ajude algum dia alguém por aí.

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

server {
    listen  443 default_server;
    server_name example.com www.example.com;

  # strenghen ssl security
  ssl_certificate /some/ssl/files.crt;
  ssl_certificate_key /some/ssl/files.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;  
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  # Add headers to serve security related headers
  add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
  add_header X-Content-Type-Options nosniff;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  add_header X-Robots-Tag none;
    
por 14.11.2015 / 08:59