nginx redireciona http para https não funciona

1

Estou tentando redirecionar de http para https. Por exemplo, você visita example.com e será automaticamente redirecionado para o link .

Eu tentei usar este:

server {
      listen         80;
      return 301 https://$host$request_uri;
} 

assim como este:

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

como encontrado aqui: No Nginx, como posso reescrever todas as requisições http para https mantendo o sub-domínio?

Mas nenhum dos dois parece estar trabalhando para mim. Eu estou hospedado no example.com.

Alguém tem uma ideia?

    
por thotho 05.04.2015 / 20:27

3 respostas

5

Você não definiu um nome de servidor para o seu host.

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

caso contrário, seu host não será chamado. Quando você olha para o exemplo, pode ver que existe um nome de servidor definido em ambos os casos.

    
por 05.04.2015 / 23:12
1

Eu tive uma falha semelhante. Em vez de redirecionar a página mantida 404.

Acabou sendo um conflito entre as configurações.

Minha configuração foi colocada em /etc/nginx/conf.d/. O que eu não notei foi que em / etc / nginx / sites-enabled / uma configuração padrão foi localizada, que também escutou na porta 80 que tinha uma maior prevençao do que o meu conf conf. Simplesmente removendo a configuração padrão, resolvi meu problema e o redirecionamento funcionou corretamente.

    
por 19.10.2015 / 11:27
0

Seu segundo exemplo funcionará para todas as solicitações que forem enviadas para o link . No entanto, lembre-se de que www.example.com e example.com são diferentes. necessário para redirecionar para qualquer coisa em example.com você poderia fazer

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

ou então redirecionar para cada host, ou seja,

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

Certifique-se de testar a configuração via nginx -t e recarregar a configuração quando fizer alterações através de um recarregamento nginx. Você pode testar o que obtém via cabeçalhos http ativos ou curl

A saída abaixo é o que eu vejo ao tentar uma solicitação de cabeçalho http para um domínio que direcionamos para https com o bloco de servidor exato acima.

$ curl -I -L http://host.domain.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.2
Date: Mon, 06 Apr 2015 03:26:39 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: https://host.domain.com/

HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Mon, 06 Apr 2015 03:26:41 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.22
Set-Cookie: PHPSESSID=dca72682392e7ac96d4b7703ea7a1eb1; path=/; domain=domain.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=c910822f8007fe8c0424715a24aa4728; path=/; domain=domain.com; secure; HttpOnly
    
por 06.04.2015 / 05:30