Forum Moderators: phranque

Message Too Old, No Replies

mod jk and tomcat virtual hosts

         

PizzaPill

5:14 pm on Jul 26, 2010 (gmt 0)

10+ Year Member



Hi,

First of all I would like to mention that this is my first post on this forum, I hope that this question is posted in the right place. I have tried finding a solution for my problem, but it either doesn't exist, or my limited brain can't manage to figure out how to do it (I strongly hope it is the latter).

My issue is with the mod_jk plugin. I want to redirect my subdomain requests jira.example.com to a tomcat 6 virtual host called jiraapp.

If I call the subdomain jira.example.com Im always getting the default tomcat 6 host called localhost.

I tested every part:
1.) mod_jk: if i change the workers name in either workers.properties or under my enabled-site <VirtualHost> or if i change the mapping to my virtual host (/etc/hosts: 127.0.0.1 localhost jiraapp) apache doesnt start.
2.) if I do a lynx jiraapp:8080 on the machine it works and shows the right webapp.

But if I access jira.example.com I always getting the default root-webapp of tomcat 6. So theres no difference in calling jira.example.com or example.com:8080.

My conclusion is that I sucessfully set up mod_jk, apache2 virtual hosts (for the subdomain) and tomcat virtual hosts, because everything works fine if tested alone. But if I try to use everything together and remotely it doesnt work.

Help would be appreciated.

Versions:

Apache Tomcat/6.0.29
Sun-Java 1.6.0_20-b02
Apache/2.2.9 (Debian) mod_jk/1.2.26 proxy_html/3.0.0 Server
libapache2-mod-jk 1:1.2.26-2+lenny1


== jk.load ==

LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
# JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories -ForwardLocalAddress
JkRequestLogFormat "%w %V %T"


== workers.properties ==

workers.tomcat_home=/opt/tomcat
workers.java_home=/usr/lib/jvm/java-6-sun
worker.list=jiraworker
worker.jiraworker.port=8009
worker.jiraworker.host=jiraapp
worker.jiraworker.type=ajp13


== /etc/hosts ==

::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
127.0.0.1 localhost.localdomain localhost jiraapp


== server.xml ===

<Engine name="Catalina" defaultHost="localhost">
[...]
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
[...]
</Host>
<Host name="jiraapp" appBase="jiraapp" docBase="/opt/tomcat/jiraapp"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false" >

jdMorgan

8:11 pm on Jul 26, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



How do you 'deliver' requests for the tomcat subdomain (which likely resolve to the front-end server assuming that you've set up the DNS properly) to the back-end server? Are you using Apache mod_alias or mod_rewrite to invoke a reverse-proxy to do this?

I would look at that implementation for a problem.

Jim

PizzaPill

11:45 pm on Jul 26, 2010 (gmt 0)

10+ Year Member



Sorry i forgot to post the apache example.com virtual hosts:


<VirtualHost *:80>
ServerName www.jira.example.com
ServerAlias jira.example.com
JkMount /* jiraworker
</VirtualHost>


In general my setup looks like this
1.) browse to jira.example.com
2.) apache <VirtualHost> hands over to mod_jk
3.) mod_jk redirects to worker.jiraworker.host:worker.jiraworker.port (jiraapp:8009) via ajp
4.) jiraapp resolves to 127.0.0.1 trough /etc/hosts
5.) tomcat relays to the jiraapp name based virtual host

Do I miss something here? I would guess iam doing something wrong in step 4) because i can call lynx jiraapp on the local bash (5) and i can access the default virtual host from remote (1-3).

My assumption is that mod_alias or mod_rewrite dont fit in here, no need to change any paths because the app is the root war of the virtual host. But as this is my first tomcat setup i could be absolutely wrong here.

PizzaPill

4:22 pm on Jul 27, 2010 (gmt 0)

10+ Year Member



Thanks to the tomcat mailinglist I found a solution. The issue here is, that mod_jk doesnt change the hostname of the original request. I only had to rename the virtual host of tomcat to jira.example.com instead of jiraapp and change the other configurations accordingly and now its working like a charm!