Redirigir HTTP a HTTPS con WWW en Nginx

Redirigir HTTP a HTTPS con WWW en Nginx

Estoy usando letsencrypt ssl. Cuando accedo al sitio con dominio.com, se me redirige ahttps://dominio.compero yo quierohttps://www.dominio.com!

Agregué www como alias para dominio.com en el panel DNS para acceder al sitio con www. pero ahora recibo doble redirección.

Primera redirección: dominio.com a https:// dominio.com, Segunda redirección: https:// dominio.com a https:// www.dominio.com

Quiero lograr esto en una única redirección 301. Ya probé múltiples soluciones dadas en SF. pero no funcionó. ¿Alguien tiene idea?

Respuesta1

Suponiendo que tiene acceso a la configuración de nginx y su certificado letsencrypt incluye dominio.com y www.dominio.com, algo como esto debería 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
}

Creo que el certificado SSL debe incluir ambos dominios porque en el caso de solicitudes ahttps://dominio.comEl protocolo de enlace SSL para dominio.com se produce antes de que se active la redirección 301.

Supongo que también podría tener certificados separados para cada dominio y ajustar las rutas de los certificados en consecuencia.

información relacionada