O Nginx não redireciona em https

1

Quero redirecionar todas as solicitações para https. Ele funciona para a página principal agora, então estou tentando obter o link que me redireciona para https. Mas então eu vou sublink como link que nunca me redireciona. E aqui está minha configuração.

server {
    listen 80;
    return 301 https://$host$request_uri;
}
server {
    listen     443;
    server_name  my.domain.com;
    ssl on;
    ssl_certificate /path/ssl.crt;
    ssl_certificate_key /path/server.key;

    location / {
        root  /home/uploader/datadir/;
        index  index.html index.htm;
    }
}
    
por Denis 25.08.2016 / 04:58

3 respostas

2

Seu bloco de servidor da porta 80 não é o padrão. Tente adicionar default_server na sua definição de porta 80.

server {
    listen 80 default_server;
    ....
}
    
por 25.08.2016 / 05:26
1

Abaixo está a configuração testada e funcionando corretamente:

server {
listen 80; # Default listen port
server_name    mydomain.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443;
ssl on ;
server_name mydomain.com;;

....

}

Mais uma maneira de fazer isso:

server {
listen 80; # Default listen port
if ( $host = domain.com ) { rewrite ^/(.*)$ https://domain.com/$1 permanent; }
server_name domain.com;
......
}

server {
listen 443;
ssl on;
server_name domain.com;
ssl_certificate /etc/nginx/conf.d/certificates/domain.com.crt;
ssl_certificate_key /etc/nginx/conf.d/certificates/domain.com.key;

.......
}
    
por 25.08.2016 / 10:11
1

O principal problema para os meus olhos é que você não está usando a diretiva server_name de modo que o nginx não saiba o que está sendo reescrito. Com o bit SSL removido:

server {
  listen 80;
  server_name *.mydomain.com mydomain.com
  return 301 https://$host$request_uri;
}
server {
  listen     443;
  #include snippets/certloc.conf
  server_name  my.domain.com;

  location / {
    root  /home/uploader/datadir/;
    index  index.html index.htm;
  }
}
    
por 14.07.2017 / 00:56