Configuração Nginx para vários domínios e mesmo aplicativo

Configuração Nginx para vários domínios e mesmo aplicativo

Eu tenho o seguinte cenário:

Um único aplicativo que atenderá vários domínios diferentes, em um único servidor e em um único contexto de uma única instância do Tomcat. (Os DNS de todos os domínios estão configurados e funcionais)

Ou seja, preciso disso quando o navegador apontar para o endereço:

domain1.example>> redirecionar para >>http://127.0.0.1/websiteapp

domain2.example>> redirecionar para >>http://127.0.0.1/websiteapp

domainn.com.br>> redirecionar para >>http://127.0.0.1/websiteapp

Na aplicação é recuperado (via URL de requisição) o domínio chamador, ou seja, é o identificador do meu cliente e através do domínio obtenho as informações no banco de dados e retorno as visualizações configuradas para esse cliente.

Configurei o NGINX (configuração mínima) assim:

server {
      listen          80;
      server_name     domain1.example domain2.example domainn.com.br;
      root /opt/tomcat2/webapps/websites;

      location / {
            proxy_pass http://127.0.0.1:8080/websitesapp;
            proxy_set_header  Host $http_host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


      }
}

Servidor Tomcat.xml

<Context docBase="websitesapp" path="/" reloadable="true" source="org.eclipse.jst.jee.server:websitesapp"/>

Na aplicação eu recupero o domínio, e "monto" a view com as informações carregadas do banco de dados.

Esta configuração está correta?

Existe alguma forma de passar o domínio para o tomcat de forma mais segura, ou seja, sem recuperá-lo pela URL do navegador?

Existe alguma contraindicação para esse tipo de abordagem?

Alguma outra abordagem que seria mais interessante?

Responder1

Exceto pelo server_name, esses serverblocos são idênticos. Em vez disso, você pode usar um único serverbloco com um server_nameque liste todos os três domínios. Ou vinte, se você expandir mais tarde...

O $http_hostuso é aceitável, mesmo que o navegador o tenha fornecido, porque foi validado. Se não correspondesse a um dos nomes de server_nameum dos serverblocos, não teria sido usado. (Desde que você tenha um default server, que a configuração padrão possui).

informação relacionada