Nginx: como redirecionar para https, mas não para subdomínio

5

Gostaria que o Nginx redirecionasse os visitantes para HTTPS no meu domínio de nível superior, mas não para determinados subdomínios (porque não quero incomodar a adição de subdomínios ao meu certificado e isso não é necessário de qualquer maneira). O que parece estar acontecendo é que o Nginx está redirecionando para HTTPS no meu domínio de nível superior, bem como para todos os subdomínios, apesar de eu apenas colocar explicitamente o redirecionamento no bloco do servidor para o domínio de nível superior. Abaixo está basicamente a maneira como estou fazendo isso:

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

server {
  server_name example.com;
  listen 443 ssl;
  ...
}

server {
  server_name nossl.example.com;
  listen 80;
}

Quando um usuário visita o link , ele é forçado a usar SSL (HTTPS) e, consequentemente, recebe um aviso desagradável sobre o certificado. Como posso não fazer isso?

    
por Patrick Canfield 06.11.2015 / 17:21

2 respostas

1

Na configuração SSL do nginx:

Encontre o código add_header Strict-Transport-Security :

server {
    listen 443 ssl;
    server_name www.example.com;
    ....
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;";
}

Por favor, remova o param includeSubDomains . O código correto é:

server {
    listen 443 ssl;
    server_name www.example.com;
    ....
    add_header Strict-Transport-Security "max-age=31536000;";
}

Isso não aplicará SSL no subdomínio.

    
por 25.05.2017 / 19:16
0

Esta é a solução feia que eu inventei. Adicionei outro bloco de servidor para o link que redireciona para o link . Eu acho que deveria haver uma solução mais elegante.

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

server {
  server_name example.com;
  listen 443 ssl;
  ...
}

server {
  server_name nossl.example.com;
  listen 80;
}

server {
  server_name nossl.example.com;
  listen 443 ssl;
  return 301 http://nossl.example.com$request_uri;
}
    
por 06.11.2015 / 17:21

Tags