Como configurar o nginx para redirecionar todas as solicitações de aliases de domínio para o domínio principal?

4

Eu tenho um servidor nginx que responde a vários domínios e desejo redirecionar todas as solicitações para o domínio principal.

Exemplo: website respondendo por xxx xxx.example.com yyy.example.com $hostname para http e https .

Eu quero configurar o servidor de forma que todas as solicitações para os outros nomes de domínio sejam redirecionadas para xxx.example.com .

    
por sorin 08.11.2012 / 11:02

3 respostas

0

Eu acho que algo nesse sentido deve funcionar:

set $primary_domain "xxx.example.com";
if ($host != $primary_domain) {
    rewrite ^ $scheme://$primary_domain permanent;
}
    
por 08.11.2012 / 11:11
21

A maneira mais eficiente e limpa de fazer isso é configurar dois blocos separados do servidor {} - um para fazer redirecionamentos e outro (com nome canônico) para manipular solicitações.

Exemplo de configuração:

server {
    listen 80;
    listen 443 ssl;

    server_name xxx yyy.example.com $hostname;

    ssl_certificate ...
    ssl_certificate_key ...

    return 302 $scheme://xxx.example.com$request_uri;
}

server {
    listen 80;
    listen 443 ssl;

    server_name xxx.example.com;

    ssl_certificate ...
    ssl_certificate_key ...

    ...
}

Documentação:

por 08.11.2012 / 13:31
1

Aqui está uma variante do anser de Brenton Alker, usando a $server_name variable para reutilizar o valor da diretiva server_name .

    server_name primary.tld secondary.tld;
    if ($host != $server_name) {
        rewrite ^ $scheme://$server_name permanent;
    }

Ou, para manter os parâmetros de consulta:

    server_name primary.tld secondary.tld;
    if ($host != $server_name) {
        rewrite ^/(.*) $scheme://$server_name/$1 permanent;
    }

Aqui, $server_name se refere ao nome do servidor principal, que é o primeiro nome em a diretiva server_name , enquanto $host se refere ao nome do host fornecido na solicitação HTTP.

Observe que a instrução if na configuração nginx nem sempre faz o que você esperaria e seu uso é desencorajado por alguns. Veja também link

    
por 03.11.2016 / 23:06