mod_jk and tomcat virtual hosts not working properly

Discussion in 'Apache' started by PizzaPill, Jul 26, 2010.

  1. #1
    Hi,


    First of all I would like to mention that this is my first post on this list, 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"
    Code (markup):
    == 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
    Code (markup):
    == /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
    Code (markup):
    == 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" >
    Code (markup):

     
    PizzaPill, Jul 26, 2010 IP
  2. PizzaPill

    PizzaPill Peon

    Messages:
    3
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Sorry i forgot to post the apache example.com virtual hosts config:

    
    <VirtualHost *:80>
        ServerName www.jira.example.com
        ServerAlias jira.example.com
        JkMount /* jiraworker
    </VirtualHost>
    
    Code (markup):
    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? My guess would be that 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).
     
    PizzaPill, Jul 26, 2010 IP
  3. PizzaPill

    PizzaPill Peon

    Messages:
    3
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    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!
     
    PizzaPill, Jul 27, 2010 IP