Nginx com erro de conexão SSL

1

Estou tentando migrar um site de HTTP para HTTPS, no entanto, minha configuração nginx (versão: 1.10.3) parece não estar funcionando.

O seguinte comportamento é desejado:

  • http://www.example.com/path/to/content deve redirecionar para https://example.com/path/to/content
  • http://example.com/path/to/content deve redirecionar para https://example.com/path/to/content
  • https://www.example.com/path/to/content deve redirecionar para https://example.com/path/to/content

Com meus navegadores de configuração atuais, não se conectará ao site usando HTTPS:

server {
    listen 80;
    listen [::]:80;

    server_name www.example.com example.com;

    # redirects both www and non-www to https
    rewrite ^(.*) https://www.example.com$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;

    # redirects non-www to www
    rewrite ^(.*) https://www.example.com$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    charset utf-8;

    # rest of my config
}
  • O que tenho que mudar para alcançar o comportamento mencionado acima?
  • É possível aceitar (e depois redirecionar) solicitações HTTP em uma primeira etapa para manter a página "viva" e me permitir testá-la?
  • Meu site tem rankings de SEO muito bons (indexados como " link "), então redirecionar corretamente é uma obrigação.
por gregory 01.03.2017 / 09:43

2 respostas

1

Essa configuração faz o que você pergunta:

server {
    listen 80;
    listen [::]:80;

    server_name www.example.com example.com;

    # redirects both www and non-www to https
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name www.example.com;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    # redirects www to non-www
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    charset utf-8;

    # rest of my config
}

Alterei rewrite para return , pois isso é um pouco mais eficiente. Com return , é necessário usar $request_uri para obter o caminho e os argumentos da solicitação no URL de redirecionamento.

Em seguida, alterei o bloco server_name example.com; with listen 443; para exibir o conteúdo real do site e server_name www.example.com; com listen 443; para redirecionar.

    
por 01.03.2017 / 11:31
1

Por favor, tente usando o método abaixo e atualize as informações de descanso:

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

E para ssl, forneça o caminho da chave ssl:

server {  
 listen   443 ssl;
 ssl on;  
 ssl_prefer_server_ciphers   on;  
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
  ssl_certificate      /path of certificate;  
 ssl_certificate_key  /path of server.key;
}
    
por 01.03.2017 / 10:01