This is how I use mod_proxy in order to have apache proxy to the tomcat server. It's recommended to understand how mod_proxy works because it's easy to turn your apache server into an "open web proxy" if it's misconfigured. ProxyRequests off is a good option to use.

I've put this in a virtual host declaration:

ProxyPass         /wiki/    http://localhost:8080/JSPWiki/
ProxyPassReverse  /wiki/    http://localhost:8080/JSPWiki/

The jspwiki is accessed by http://virtualhost/wiki/

See also ApacheTomcatConnection#

An alternative option is to use the AJPv13 Protocol through the use of JK connectors.

Just download the module, load it in Apache, create and customise a (or in the case of JK2) file in the Apache conf directory and it will connect to Tomcat using the appropriate connector (configured by default in Tomcat's server.xml).

This is a more efficient way of achieving the same effect as a reverse proxy.

If you require editors to set a cookie in order to edit a page, ProxyPassReverse won't work. Then you need to configure Tomcat with proxy support too. Like this:

  • Edit server.xml
  • Identify the connector which listens to port 8080 (search for port="8080")
  • Add proxyPort="80"
  • Add proxyName="virtualhost" where virtualhost is the name of your host
  • Restart Tomcat

Tomcat 4.1 Proxy Howto

If you have virtual host and use ProxyPass to forward to tomcat, you should use hostnames in the proxy. So instead of
ProxyPass /wiki/    http://localhost:8080/JSPWiki/
ProxyPassReverse /wiki/     http://localhost:8080/JSPWiki/
ProxyPass /wiki/
ProxyPassReverse /wiki/
The wiki:baseUrl tag gets ServerName from the host Header, an in my case, the redirect pointing to an internal address, so the URL for stylesheets etc were not accessible externally. You can use the following jsp to test the headers.
<head><title>Header test</title></head>
<%  java.util.Enumeration names = request.getHeaderNames();
        while (names.hasMoreElements()) {
            String name = (String)names.nextElement();
            out.println(name+": "+request.getHeader(name)+"<br>");
-- Tested with Tomcat 5.0.28. Apache 2.0.52 and JSPWiki 2.3.55

How to minimize the Session? Every request gets a new Session for the Proxy IP-Adress!

How to determine the real IP-Adress for the ServletContainer? JSPWiki see the Proxy IP-Adress only!

--AnonymousCoward, 16-Nov-2006

I am having a similar problem. I have configured Apache to act as a proxy. All requests get redirected to tomcat. However it is now impossible to log in to the wiki. The login seems to work and the logs confirm that the login was successfull. Unfortunately the user is then redirected to the Main page were the login information is lost.

Only anonymous access is possible at the moment. This is a big problem for me as I need to disable Edit capabilities or anonymous users. Is there a way to set this up so that users are able to log in?

--DanielRobinson, 19-Jan-2007

I have a similar situation with a JSPWiki site that works perfectly on its internal host, and works almost perfectly on our proxied external Apache host. Users can login, get their identity asserted, and so on, but the following pages see their asserted identity but not their login status. My temporary workaround is to allow editing by asserted users in addition to authenticated ones. Sure a hacker could forge a cookie, but I'm not running something where that is a concern. I just want to give credit where due. Don't know if that will help in your case. If so, it is in jspwiki.policy of course.

-- Mike Martin

I am having a similar problem. JSPWiki 2.5 beta with Tomcat 6.0. Setup ContainerAuth and virtual host on Tomcat. Everything works great except for preview. It appears that the session is lost between the Edit page and the Preview Page. Bug Report Here for more info.

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-15) was last changed on 19-Nov-2008 20:33 by