Nginx redireciona do domínio antigo para o novo com ssl

10

Estou tentando alterar o nome de domínio do meu site de https://www.myolddomain.se/parahttps://www.mynewdomain.se/

O problema é que, para o meu domínio antigo, forcei o SSL em todas as páginas e, portanto, todos os links no google e em outros sites estão vinculados ao https. Quando tento visitar o domínio antigo a partir de um link https, recebo um erro de certificado. Portanto, minha pergunta é: como redirecionar todas as páginas vinculadas com https para outro domínio seguro https, no nginx, sem obter esse erro?

Eu fiz algumas pesquisas e encontrei esta solução para redirecionar páginas da web, que agora está inserida no meu arquivo de configuração. Embora eu ainda receba o erro de certificado!

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

Mas eu simplesmente não consigo fazê-lo funcionar! Se alguém pudesse encontrar uma resposta eu ficaria muito grato

user246341
fonte

Respostas:

11

A solução depende dos recursos do cliente, do seu orçamento e das especificidades da arquitetura.

1. Se os dois domínios estiverem hospedados no mesmo endereço IP e você não puder ter outro:

Se o cliente suportar a extensão 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

}

Se ele não entender a extensão x509 SubjectAltNamee você puder gerar um novo certificado, peça um certificado exclusivo para os dois domínios. A configuração deve se parecer com:

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. Se cada domínio estiver em um endereço IP distinto ou se estiver no mesmo, mas você puder ter outro

A solução mais genérica, ouça dois IPs diferentes (geralmente um IP público adicional é "simplesmente" uma opção de compra no seu provedor de hospedagem):

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
fonte
1
Muito obrigado! Essa resposta funcionou perfeitamente para mim, e eu não poderia ter desejado uma mais completa. Estou muito agradecido, obrigado!
precisa saber é o seguinte