Sebastiaan,
Thanks very much, that helps a lot. It now works. Now that it's working I
want to switch it to use ajp instead of http.
I understand from your explanation how ProxyPreserveHost was breaking it.
However, when I switch to use ajp, I'm seeing the same behavior. I'm having
trouble understanding what tomcat is returning in terms of what I should
define as my ProxyPassReverse. Is there an easier way to debug this? Here
is how my virtualhost looks now:
<VirtualHost *:80>
ServerName tiger
ServerAdmin [EMAIL PROTECTED]
DocumentRoot /opt/www/
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://pabst:8009/web/
ProxyPassReverse / ajp://pabst:8009/web/
ProxyPassReverseCookiePath /web /
</VirtualHost>
I've tried a couple of variations of the ProxyPassReverse
ProxyPassReverse / ajp://pabst:8009/web/
ProxyPassReverse / ajp://pabst/web/
ProxyPassReverse / http://pabst:8080/web/
ProxyPassReverse / http://pabst/web/
All have the same effect. Should this work?
Jeremy
On Fri, Mar 21, 2008 at 3:17 AM, Sebastiaan van Erk <[EMAIL PROTECTED]>
wrote:
> Looking at your mod_proxy config again I noticed that you are using
> ProxyPreserveHost on. I think this is causing the problems, you should
> remove this directive.
>
> What I think is happening is this:
>
> 1) Wicket says: redirect to /web/xxxx
> 2) Tocmat makes the url absolute by prepending the virtual host. Since
> you have ProxyPreserveHost on, tomcat sees the virtual host as
> "localhost" and NOT "localhost:8080", and returns
> http://localhost/web/xxx as the new lcoation.
> 3) Apache mod_proxy does NOT reverse proxy the url, because it does not
> have the :8080 on it and does not match your rule.
>
> If you remove the ProxyPreserveHost on, tomcat will return
> http://localhost:8080/web/xxxxx as the redirect location and Apache will
> reverse proxy it.
>
> The only downside of this is that your wicket app will not know the REAL
> virtual host, and so automatically generated absolute URL's (for example
> in emails) will be wrong.
>
> Regards,
> Sebastiaan
>
> Sebastiaan van Erk wrote:
> > Hi,
> >
> > Jeremy Levy wrote:
> >> I have been having trouble with this for a couple of months, it seems
> >> that
> >> redirects in Wicket 1.3.x seem to be writing out the URL incorrectly
> >> in our
> >> set up.
> >>
> >> We are running JBoss 4.2 with embedded Tomcat 5.5 using Apache/2.2.4
> with
> >> mod_proxy.
> >>
> >> The Tomcat URL for the application is http://localhost:8080/web/
> >>
> >> The Apache URL for the application is http://localhost
> >>
> >> For the most part the site works well when accessed via Apache (and
> >> perfectly directly via Tomcat), except on links/urls that involve
> >> (from what
> >> I can tell) a redirect from Wicket. These redirect the users browser
> to
> >> /web/xxxx which shouldn't happen from infront of the proxy.
> >
> > From what I can tell your mod_proxy config looks correct, you could
> > check the log to see what it's doing. But Wicket redirecting you to
> > /web/xxxx is perfectly fine, as far as Wicket is concerned, that's where
> > the site is at! It seems that mod_proxy is not properly reverse proxying
> > the redirect...
> >
> > Regards,
> > Sebastiaan
> >
> >> Examples of this are:
> >>
> >> 1. Form submits (they go through, but the next page is requested with
> the
> >> /web in the url)
> >> 2. Redirects from Application.getHomePage()
> >> 3. Any use of RestartResponseAtInterceptPageException
> >> 4. setResponsePage(MyPage.class) inside of an
> >> Link.onClick(BookmarkablePageLink works fine to the same page)
> >>
> >> Further evidence that this is a bug is that if I set my application to
> >> IRequestCycleSettings.ONE_PASS_RENDER everything works perfectly but
> with
> >> both IRequestCycleSettings.REDIRECT_TO_BUFFER and
> >> IRequestCycleSettings.REDIRECT_TO_RENDER it fails.
> >>
> >> Our mod_proxy / virtualhost configuration:
> >>
> >> <VirtualHost *>
> >> ServerAdmin [EMAIL PROTECTED]
> >> ServerAlias localhost
> >>
> >> ServerSignature On
> >>
> >> DocumentRoot "/var/www"
> >>
> >> ProxyRequests Off
> >>
> >> <Proxy *>
> >> Order deny,allow
> >> Allow from all
> >> </Proxy>
> >>
> >> RewriteEngine on
> >>
> >> RewriteLog "/var/log/apache2/rewrite.log"
> >> RewriteLogLevel 2
> >>
> >> ProxyPass / http://localhost:8080/web/
> >> ProxyPassReverse / http://localhost:8080/web/
> >> ProxyPassReverseCookiePath /web /
> >> ProxyPreserveHost On
> >>
> >> ErrorLog /var/log/apache2/error.log
> >> LogLevel warn
> >> </VirtualHost>
> >>
> >> I'm not 100% sure that the mod_proxy configuration is correct, but
> >> I've read
> >> all the articles on this list about it as well as the wiki page and
> >> have run
> >> out of ideas to mess with.
> >>
> >> Any help is appreciated.
> >>
> >> Jeremy
> >>
>