mod_proxy_ajpis an Apache module which can be used to forward a client HTTP request to an internal Tomcat application server using the AJP protocol.
To respond to the question "Why should I use mod_proxy_ajp rather than a classic mod_proxy ?"
- You can gain a lot of flexibility (lot of the apache modules/features can be used especially "name-based virtual hosting")
- Practical for those who need to support Java applications along with PHP / Perl … (only one apache server is needed)
- Certificates management is easier in apache configuration (this argument is a lot subjective)
- It's not Tomcat's main objective to serve http static resources (not optimized for that)
- Load balancing/cluster management is easier with an apache frontend
conf/server.xmlfile like that:
This line will enable AJP connections to the 8009 port of your tomcat server (localhost for example).By default you have to do nothing, the ajp connextor is already configured in default server.xml after installation.
port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Listen 80 NameVirtualHost *:80
> ServerName tomcat.example.com ErrorLog /var/log/apache2/ajp.error.log CustomLog /var/log/apache2/ajp.log combined <Proxy *> AddDefaultCharset Off Order deny,allow Allow from all Proxy> ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/
ProxyPassReverseare classic reverse proxy directives used to forward the stream to another location.
ajp://...is the AJP connector location (your tomcat's server host/port)
What's the result ?A web client will connect through HTTP to http://tomcat.example.com/ (supposing your apache2 server is running and you configured your DNS to serve this apache instance), the mod_proxy_ajp will forward you request transparently using the AJP protocol to the tomcat application server on