Tomcat y múltiples dominios/aplicaciones

Actualmente ejecuto un solo tomcat con una sola aplicación WAR en el puerto 80. El nombre de dominio www.foo.org está apuntado a esta IP del servidor.

¿Cuál es el procedimiento para agregar www.bar.org dominio para un cliente diferente en el puerto 80?

¡Gracias

preguntado el 22 de mayo de 12 a las 16:05

3 Respuestas

Desde el principio, tiene un solo registro de "Host" en su conf / server.xml para localhost

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

Ahora puede agregar otros registros de "Host", por ejemplo

  <Host name="anotherclient.com"  appBase="anotherclient" unpackWARs="true" autoDeploy="true">

       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="anotherclient_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>

sin que importe name="anotherclient.com" es el dominio del nuevo cliente, y appBase="anotherclient" es el nombre del directorio raíz de la aplicación web (donde implementa su guerra); es relativo al directorio de inicio de tomcat.

Los cambios se aceptarán después de reiniciar tomcat.

Solicitudes dirigidas a otros dominios (no enumerados en server.xml) pero apuntando a la dirección IP de su servidor se pasará a la aplicación predeterminada, se especifica en el Engine elementos

<Engine name="Catalina" defaultHost="localhost">

Respondido el 04 de Septiembre de 16 a las 23:09

¿Significa esto que las guerras están en /opt/tomcat/webapps/ROOT.war para el sitio original foo.org, y luego /opt/tomcat/anotherclient/ROOT.war para el nuevo sitio bar.org? - CódigoMed

@CodeMed Sí, eso es correcto. Acabo de intentar esto yo mismo y poner los WAR así parece funcionar para mí. - Simón Forsberg

tenemos que crear ese directorio otro cliente nosotros mismos o se está creando después de reiniciar tomcat7 - dólar

Un directorio vacío no será muy útil sin war dentro de él, así que simplemente créalo y despliega tu war allí. Luego reinicie Tomcat. - Humkins

@Axel Tengo varios hosts en tomcats server.xml. Cada uno se parece a esto: Así mapeo una URL a una aplicación, todo bajo "webapps". - BAERÚS

En su configuración predeterminada, Tomcat acepta solicitudes de cualquier nombre de host y las envía todas al "host local". definido en conf/server.xml. Si no ha cambiado eso, todo lo que tiene que hacer es asegurarse de tener registros DNS configurados para que ambos nombres de host apunten a su servidor.

Si desea tener un conjunto diferente de aplicaciones web para cada nombre de host, deberá definir un segundo en conf/server.xml y use el nombre de host apropiado para ello. (Tenga en cuenta que siempre tendrá que tener un host "predeterminado" al que vayan todas las solicitudes que no coincidan con ninguno de los hosts definidos explícitamente).

Puede leer la documentación de aquí: http://tomcat.apache.org/tomcat-7.0-doc/config/host.html (Eso es para Tomcat 7.0.x. No mencionó su versión, así que le di un enlace a la documentación de la última versión).

contestado el 22 de mayo de 12 a las 16:05

Gracias. Es la versión 7. ¿Qué pasa con los archivos WAR? cada cliente necesita una implementación diferente? - alguacil de Java

@user648026 cada uno obtiene su propia base de aplicaciones, por lo que puede optar por colocar sus archivos WAR en cualquiera de ellos o en ambos. Elegir uno hará que ese archivo WAR solo sea accesible usando el nombre de host de ese , mientras que colocar el archivo WAR en ambos significa que tendrá dos copias de la aplicación web ejecutándose simultáneamente en el mismo contenedor: una para un host y otra para el otro. - cristobal schultz

Entonces, un solo tomcat que se ejecuta en el puerto 80 puede manejar múltiples hosts en el mismo puerto (80) con un solo WAR, usando la configuración de múltiples "hosts". - alguacil de Java

Por lo general, tiene un Tomcat (u otro servidor de aplicaciones) en un puerto diferente al 80 (como 8080 o 7001 o lo que quiera). Después de eso, coloque un servidor web (como un servidor http de apache) en el puerto 80 y configure uno o varios conectores para que apunten a un puerto diferente en un servidor de aplicaciones diferente con una dirección diferente.

Para Apache http + tomcat puedes echar un vistazo a este enlace:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

contestado el 22 de mayo de 12 a las 16:05

No hay ninguna razón particular para agregar otro producto al entorno del OP: este problema se puede resolver usando Tomcat solo. - cristobal schultz

Esa es solo una mejor práctica en un entorno profesional para tener un servidor web y de aplicaciones. - Guaidó79

Malarkey: Tomcat es un servidor web perfectamente aceptable. Llamar a algo una "mejor práctica" no lo convierte en una mejor práctica. Es una práctica /común/, pero ciertamente no es una "mejor" práctica. - cristobal schultz

Otra alternativa a ejecutar Apache + Tomcat para reenviar el tráfico del puerto 80 al 8080 es usar tablas NAT y traducir todo el tráfico que llega del puerto 80 al puerto 8080. Aunque Apache es rápido, NAT es más rápido y ya es parte de iptables (yo asumo que su servidor es linux). - oᴉɹǝɥɔ

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.