Apache Tomcat mod jk virtual host

Дусал нэвтэрхий толь-с


You can do that with mod_jk:

1) Enable module "mod_jk" in your Apache web servers httpd.conf. Uncomment this line, by removing the leading hash:

LoadModule jk_module modules/mod_jk.so

If you are on Linux type:

sudo apt-get install libapache2-mod-jk sudo a2enmod jk

2) Edit [TOMCAT_DIR]/conf/server.xml. Add a "jvmRoute" attribute to the "engine" element:

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

Uncomment the AJP connector (the http connector may be disabled):

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3) Create a file "workers.properties", next to "httpd.conf". Add this content and set right ip/port:

worker.list=tomcat

worker.tomcat.type=ajp13 worker.tomcat.host=127.0.0.1

  1. This is the port from the AJP connector, not HTTP!

worker.tomcat.port=8009 worker.tomcat.lbfactor=10

4) Add this mapping at the end of httpd.conf and replace [PATH_TO_DIR] by the absolute path:

<IfModule jk_module>

 JkWorkersFile [PATH_TO_DIR]\workers.properties
 JkLogFile [PATH_TO_DIR]\mod_jk.log 
 JkLogLevel INFO 
 JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
 SetEnvIf Request_URI "/error/*" no-jk
 SetEnvIf Request_URI "/blog*"   no-jk
 JkMount    /                    tomcat
 JkMount    /*                   tomcat

</IfModule>

5) Start Tomcat and restart Httpd.




I've figured that out using mod_proxy instead of mod_jk and adding these lines :

ProxyPass / http:// SERVER_IP:8080/ ProxyPass /myapp/ http:// SERVER_IP:8080/myapp

And this line for cookies :

ProxyPassReverseCookiePath /myapp /"