Questão Nginx Redirecionar allsubdomains para um URL não-subdomínio


Eu estou atualmente emitindo o seguinte problema e, por inferno, eu não posso resolvê-lo. Os 20 tópicos similares que encontrei com o google não ajudam.

Primeiro de tudo, eu criei um simples redirecionamento HTTP para HTTPS, 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 my-domain.com, vou ser redirecionado para https: // my-domain.com. 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-dominio.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 para o 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. Todas as solicitações HTTPS nunca 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 NO subdomínio? Toda combinação deve sempre resultar em: https: // my-domain.com $ request_uri

desde já, obrigado

Atualizar:

Não resolveu meu problema completamente, mas eu tenho algo que eu possa viver. 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 https: // my-domain. Também my-domain (http e sem www.) Redirecionará para https: // my-domain também. Isso parece "bem" para as minhas necessidades.


1


origem




Respostas:


Você poderia usar um default_server bloco para combinar com qualquer http e https domínios não explicitamente definidos em outro server quadra. o https parte só funciona corretamente com certificados wild-card.

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

server {
    listen 443 ssl http2;
    ...
}

Vejo esse documento para detalhes.


0