Múltiplos domínios no nginx sem configuração repetitiva

3

Eu tenho 2 nomes de domínios

  1. exemple.net
  2. exemple.com

e muitos sub-domaines

  • demo1.exemple.com
  • demo2.exemple.com
  • ...
  • demo50.exemple.com

Atualmente, tenho 50 blocos como este:

server {
        listen 80;
        server_name demo1.exemple.*;
        location / {
                proxy_pass http://127.0.0.1:8081;
        }
}
server {
        listen 80;
        server_name demo2.exemple.*;
        location / {
                proxy_pass http://127.0.0.1:8082;
        }
}

Esta solução está funcionando, mas não está realmente otimizada.

Eu tentei "retornar" .com em vez de .net, para evitar a redundância "X", mas não sei como incluir o subdomínio com uma variável.

server {
  server_name *.demo.net;
  return 301 http://demo.com$request_uri;
}

Deve haver uma maneira de respeitar as melhores práticas do nginx e evitar toda essa redundância, mas não sei como gerenciar o problema.

    
por Lucas tillier 02.02.2016 / 12:38

2 respostas

1

Use uma captura nomeada na diretiva server_name . Algo parecido com isto:

server {
    server_name ~^(?<name>.+).example.net$;
    return 301 http://$name.example.com$request_uri; 
}

Veja este documento para detalhes.

    
por 02.02.2016 / 13:33
0

Se eu entendi corretamente, você tem um monte de sites fornecidos em portas diferentes e você fez cada um bloco de servidor no NginX. Se eles são sites completamente separados, então esta é a única maneira que eu penso. No entanto, se os sites forem todos servidos em uma pasta raiz, você deverá criar apenas um bloco de servidor com o nome de todos os nomes de domínio.

Vou me queimar e ser morto por causa disso, mas eu consideraria usar IF para verificar o nome do domínio e redirecionar os usuários de acordo com ele. E eu sei ... SE É MAL!

    
por 02.02.2016 / 14:30

Tags