Redirecionar HTTP para HTTPS com WWW no Nginx

Redirecionar HTTP para HTTPS com WWW no Nginx

Estou usando letsencrypt SSL. Quando acesso o site com domínio.com, ele é redirecionado parahttps://domínio.commas eu querohttps://www.domínio.com!

Adicionei www como alias para domain.com no painel DNS para acessar o site com www. mas agora estou recebendo redirecionamento duplo.

Primeiro redirecionamento: domínio.com para https:// domínio.com, Segundo redirecionamento: https:// domínio.com para https:// www.domínio.com

Quero conseguir isso em um único redirecionamento 301. já tentei várias soluções fornecidas em SF. mas não funcionou. Alguém tem ideia?

Responder1

Supondo que você tenha acesso à configuração do nginx e seu certificado letsencrypt inclua domínio.com e www.domínio.com, algo assim deve funcionar:

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

server {
  listen 80;
  listen 443 ssl;
  server_name domain.com;
  ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
  return 301 https://www.domain.com$request_uri;
}

server {
  listen 443 ssl;
  server_name www.domain.com;
  ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

  # the rest of your config
}

Acredito que o certificado SSL precise incluir ambos os domínios porque no caso de solicitações parahttps://domínio.como handshake SSL para domínio.com ocorre antes do redirecionamento 301 ser acionado.

Suponho que você também possa ter certificados separados para cada domínio e ajustar os caminhos dos certificados de acordo.

informação relacionada