1

I've configured Apache web server and Tomcat like this:

I created a new file in apache2/sites-available, named it "myDomain" with this content:

<VirtualHost *:80> ServerAdmin [email protected] ServerName myDomain.com ServerAlias www.myDomain.com ProxyPass / ajp://localhost:8009 <Proxy *> AllowOverride AuthConfig Order allow,deny Allow from all Options -Indexes </Proxy> </VirtualHost> 

Enabled mod_proxy and myDomain

a2enmod proxy_ajp a2ensite myDomain 

Edited Tomcat's server.xml (inside the Engine tag)

<Host name="myDomain.com" appBase="webapps/myApp"> <Context path="" docBase="."/> </Host> <Host name="www.myDomain.com" appBase="webapps/myApp"> <Context path="" docBase="."/> </Host> 

This works great. But I don't like to put static files (html, images, videos etc.) into {tomcat home}/webapps/myApp's subfolders instead I'd like to put them the apache webserver's root WWW directory's subdirectories. And I'd like Apache web server to serve these files alone.

How could I do this? So all incoming request will be forwarded to Tomcat except those that ask for a static file.

2 Answers 2

1

You probably want to use ProxyPassMatch. You can use it like:

ProxyPassMatch ^(/.*\.cgi)$ ajp://localhost:8009$1 

to proxy all requests ending in .CGI. If you wish to proxy multiple extensions just add more lines or edit the regex. Then you just have to make sure your VirtualHost is setup to serve the remaining image types.

2
  • but this redirects to the tomcatHome/webapps/myApp/ location ...my static files in the var/www folder Commented Feb 27, 2011 at 2:37
  • Then just add a DocumentRoot /var/www to the VirtualHost section. Then with the above ProxyPassMatch all .cgi requests will be proxied and everything will be served directly from /var/www. Commented Feb 27, 2011 at 14:55
0

While uesp's answer is technically correct, I always recommend that people use the Apache mod_jk connector to host Java Application servers over Apache. In general, it simplifies, well... everything, and allows you to mount specific contexts. For example, you can now just use:

LoadModule jk_module libexec/mod_jk.so JKMount /myapp/* ajp13 

It makes forwarding requests much easier, and also gives you a lot more flexibility in using Apache to host other resources.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.