Nginx Redirecionar todos os subdomínios para um URL não-subdomínio

1

Atualmente, estou lançando o seguinte problema e, por droga, não consigo resolvê-lo. O > 20 tópicos semelhantes que encontrei com o google não ajudam.

Primeiro de tudo, criei um redirecionamento HTTP para HTTPS simples, que se parece com isso:

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

server {
    listen 443 ssl http2;
    server_name my-domain.com;
    ...
}

E isso funciona perfeitamente bem. Se eu tentar abrir meu-dominio.com.br , serei redirecionado para link . Mas ainda há o problema com subdomínios. Se eu abrir www.my-domain.com ou test.my-domain.com , eu gostaria que esses subdomínios redirecionassem para minha raiz HTTPS domínio: https: // meu-domínio.com. Sem nenhum subdomínio na frente dele. O mesmo deve aparecer para subdomínios HTTPS. Eu literalmente quero banir qualquer subdomínio (por enquanto).

Eu tentei muitas configurações, como adicionar *. my-domain.com ao server_name, e ainda assim isso não funciona como esperado. Eu também tentei criar um redirecionamento HTTPS de * .my-domain.com para meu domínio HTTPS normal, e ainda tenho um resultado semelhante em cada configuração:

  1. Todas as solicitações HTTP resultam em um URL HTTPS contendo o subdomínio.
  2. Nem todas as solicitações HTTPS resultam em um URL HTTPS sem um subdomínio.

Agora, minha pergunta: Como posso redirecionar todos os subdomínios (http e https) para um URL https específico que contenha NENHUM subdomínio? Toda combinação deve sempre resultar em: link

Obrigado antecipadamente

Atualização:

Não resolvi meu problema completamente, mas tenho algo com o qual posso conviver. Criei um CNAME de www.my-domain.com para my-domain.com na configuração do meu domínio. Eu também modifiquei o nginx e adicionei uma nova configuração de servidor que redireciona de 443 www.my-domain para https: // my-domain. Eu também tenho um servidor de porta 80 normal que também redireciona de www.my-domain para https: // my-domain. Eu modifiquei meu certificado e adicionei o domínio-my à lista de domínios e subdomínios. Agora, todas as solicitações em www.my-domain (http ou https) serão redirecionadas para o link . Também o meu domínio (http e sem www.) Redirecionará para o link também. Isso parece "bem" para as minhas necessidades.

    
por onek24 28.09.2017 / 12:18

1 resposta

0

Você pode usar um bloco default_server para corresponder a http e https domínios não definidos explicitamente em outro bloco server . A parte https só funciona corretamente com certificados curinga.

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ... ssl configuration
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    ...
}

Consulte este documento para obter detalhes.

    
por 28.09.2017 / 18:13