2010-09-14 19 views
21

sujeto lo dice todo. Lo que quiero es mapear cada subdominio a una aplicación web como:¿Cómo se asigna un subdominio a una aplicación web en Tomcat 6 (incluida la raíz de la aplicación web)?

http://root.domain.com:8080 -> http://domain.com:8080/ 
http://manager.domain.com:8080 -> http://domain.com:8080/manager 
http://abc.domain.com:8080 -> http://domain.com:8080/abc 
http://def.domain.com:8080 -> http://domain.com:8080/def 

en una máquina localhost esto sería

http://root.localhost:8080 -> http://localhost:8080/ 
http://manager.localhost:8080 -> http://localhost:8080/manager 
http://abc.localhost:8080 -> http://localhost:8080/abc 
http://def.localhost:8080 -> http://localhost:8080/def 

Idealmente, me gustaría usar el puerto 80 en lugar de 8080, pero esa es otra historia. Me encantaría hacerlo funcionar con el puerto 8080 al principio, para que la ruta al final de la URL desaparezca.

Nota, las flechas no son redirecciones, pero lo que entraría si dejara Tomcat como está.

Conozco la página de Tomcat docs http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html. Lo he leído muchas veces, pero no hice mucho progreso. Edité etc/hosts para agregar 127.0.0.1 bbstats.localhost. Luego agregué

<Host name="bbstats.localhost" appBase="webapps/bbstats" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
</Host> 

al servidor.xml de Tomcat en el directorio de configuración. El contexto.xml de mi webapp es:

<Context path="/bbstats" docBase="bbstats" debug="5" reloadable="true" crossContext="true"> 
</Context> 

Reiniciar Tomcat. Redploy a través de Ant. Al entrar

http://bbstats.localhost:8080/

en un navegador, recibo una pantalla en blanco.

Cuando uso appBase = "webapps" en lugar de appBase = "webapps/bbstats", llego a la aplicación raíz de Tomcat. El último comportamiento es algo esperado. Pero, ¿cómo puedo hacer que bbstats.localhost: 8080 vaya a la aplicación web bbstats sin un seguimiento/bbstats en la URL?

+0

Hola Karsten, ¿tu Tomcat comenzó limpio con la configuración anterior? ¿Algún error en el registro de catalina? – codeporn

+0

Limpio de lo que veo. No hay errores en catalina. *. Registro, solo una advertencia "14.09.2010 17:25:53 org.apache.catalina.startup.HostConfig deployDescriptor WARNUNG: A docBase C: \ dev \ tomcat \ webapps \ bbstats dentro de la aplicación de host se ha especificado y se ignorará ", lo que probablemente tiene que ver con el contexto.xml que especifica los mismos valores de appBase y docBase. – Kawu

Respuesta

26

¿Puede intentar anidar cada aplicación web como la aplicación raíz en el <Host> en server.xml dando path="". No lo he intentado yo mismo.

<Host name="bbstats.localhost" appBase="webapps"> 
    <Context path="" docBase="/bbstats/"/> 
</Host> 

<Host name="tomcatstuff.localhost" appBase="webapps"> 
    <Context path="" docBase="/tomcatstuff/"/> 
</Host> 
+2

Ahora estoy usando "" y funciona ahora! :-) Nota: también eliminé path y docBase de mi META-INF/context.xml. Citando http://old.nabble.com/appbase-and-docbase-td18616249.html: "... los atributos path y docBase no están permitidos para un elemento en META-INF/context.xml" Encontré su técnica confirmada por http://oreilly.com/java/archive/tomcat-tips.html. ¡Aclamaciones! – Kawu

+6

Al usar docBase como se describe anteriormente se produce un 'Document base/bbstats no existe o no es un directorio legible', el problema se resolvió eliminando la barra:' '. Funciona muy bien, gracias! – Kof

+2

Hola, ¿podrías guiarme para lograr la configuración del subdominio usando tomcat para el servidor de windows – kakabali

Cuestiones relacionadas