Configuración de Nginx para múltiples dominios y la misma aplicación

Configuración de Nginx para múltiples dominios y la misma aplicación

Tengo el siguiente escenario:

Una única aplicación que prestará servicio a varios dominios diferentes, en un único servidor y en un único contexto de una única instancia de Tomcat. (Los DNS de todos los dominios están configurados y funcionales)

Es decir, lo necesito cuando el navegador apunta a la dirección:

domain1.example>> redirigir a >>http://127.0.0.1/websiteapp

domain2.example>> redirigir a >>http://127.0.0.1/websiteapp

domainn.com.br>> redirigir a >>http://127.0.0.1/websiteapp

En la aplicación se recupera (vía URL de solicitud) el dominio llamante, es decir, es mi identificador de cliente y a través del dominio obtengo la información en la base de datos y devuelvo las vistas configuradas a ese cliente.

Configuré el NGINX (configuración mínima) así:

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"/>

En la aplicación recupero el dominio y "monto" la vista con la información cargada desde la base de datos.

¿Es correcta esta configuración?

¿Hay alguna forma de pasar el dominio a Tomcat de forma más segura, es decir, sin recuperarlo mediante la URL del navegador?

¿Existe alguna contraindicación para este tipo de abordaje?

¿Algún otro enfoque que sería más interesante?

Respuesta1

A excepción de server_name, estos serverbloques son idénticos. En su lugar, puede utilizar un solo serverbloque con un server_nameque enumere los tres dominios. O veinte, si amplías más tarde...

Está $http_hostbien utilizarlo, aunque el navegador lo haya proporcionado, porque ha sido validado. Si no coincidiera con uno de los nombres de server_nameuno de los serverbloques, no se habría utilizado. (Siempre que tenga un valor predeterminado server, que es el que tiene la configuración predeterminada).

información relacionada