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 server
blocos são idênticos. Em vez disso, você pode usar um único server
bloco com um server_name
que liste todos os três domínios. Ou vinte, se você expandir mais tarde...
O $http_host
uso é aceitável, mesmo que o navegador o tenha fornecido, porque foi validado. Se não correspondesse a um dos nomes de server_name
um dos server
blocos, não teria sido usado. (Desde que você tenha um default server
, que a configuração padrão possui).