Redireccionamiento de Nginx de dominio antiguo a nuevo con ssl

10

Estoy tratando de cambiar el nombre de dominio de mi sitio de https://www.myolddomain.se/ahttps://www.mynewdomain.se/

El problema es que para mi antiguo dominio forcé SSL en todas las páginas y, por lo tanto, todos los enlaces en Google y otros sitios están vinculados con https. Cuando intento visitar el dominio anterior desde un enlace https, aparece un error de certificado. Entonces mi pregunta es: ¿cómo puedo redirigir todas las páginas vinculadas con https a otro dominio seguro https, en nginx, sin obtener este error?

Investigué un poco y encontré esta solución para redirigir páginas web, que ahora está insertada en mi archivo de configuración. ¡Aunque todavía recibo el error de certificado!

server {
        server_name .myolddomain.se;
        return 301 https://www.mynewdomain.se$request_uri;
}

¡Pero no puedo hacer que funcione! Si alguien pudiera dar una respuesta, estaría muy agradecido

usuario246341
fuente

Respuestas:

11

La solución depende de las capacidades del cliente, su presupuesto y especificidades de arquitectura.

1. Si ambos dominios están alojados en la misma dirección IP y no puede tener otra:

Si el cliente admite la extensión TLS SNI:

server {
    listen X.X.X.X:443 ssl;
    ssl_certificate /path/to/myolddomain.cert;
    ssl_certificate_key /path/to/myolddomain.key;
    server_name .myolddomain.se;
    return 301 https://www.mynewdomain.se$request_uri;
}


server {
    listen X.X.X.X:443 ssl;
    ssl_certificate /path/to/mynewdomain.cert;
    ssl_certificate_key /path/to/mynewdomain.key;
    server_name .mynewdomain.se;

    [ ... ] # Your stuff

}

Si no entiende pero comprende la extensión x509 SubjectAltNamey puede permitirse generar un nuevo certificado, solicite un certificado único para ambos dominios. La configuración debería verse así:

server {
    listen X.X.X.X:443 ssl default_server;
    ssl_certificate /path/to/domain.cert;
    ssl_certificate_key /path/to/domain.key;
    server_name _;
}

server {
    listen X.X.X.X:443;
    server_name .myolddomain.se;
    return 301 https://www.mynewdomain.se$request_uri;
}


server {
    listen X.X.X.X:443;
    server_name .mynewdomain.se;

    [ ... ] # Your stuff

}

2. Si cada dominio está en una dirección IP distinta o si está en la misma pero puede tener otra

La solución más genérica es escuchar dos IP diferentes (por lo general, una IP pública adicional es "simplemente" una opción para comprar en su proveedor de alojamiento):

server {
    listen X.X.X.X:443 ssl;
    ssl_certificate /path/to/myolddomain.cert;
    ssl_certificate_key /path/to/myolddomain.key;
    server_name .myolddomain.se;
    return 301 https://www.mynewdomain.se$request_uri;
}

server {
    listen Y.Y.Y.Y:443 ssl;
    ssl_certificate /path/to/mynewdomain.cert;
    ssl_certificate_key /path/to/mynewdomain.key;
    server_name .mynewdomain.se;

    [ ... ] # Your stuff

}
Xavier Lucas
fuente
1
Muchas gracias! Esta respuesta funcionó perfectamente para mí, y no podría haber deseado una más completa. Estoy muy agradecido, gracias!
user246341