tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "McHugh, Jason" <jmch...@amazon.com>
Subject Tomcat as a proxy server
Date Mon, 24 Jul 2006 04:22:03 GMT

I want to run straight tomcat as a proxy server.  (I understand that there are a variety of
other applications out there that may perform better and offer more features.  I also understand
that I could front tomcat with apache and do some sort of rewriting solution.  I'd rather
not do any of these; I just want to use plain tomcat.  :) )

I've written a servlet and overridden the commonly used default servlet 'org.apache.catalina.servlets.DefaultServlet'
with my own.  All of this is working fine.

The problem occurs when I run my server as a proxy server.  Web browsers will make the request
for "http://www.google.com" look something like this:

GET http://www.google.com/ HTTP/1.1
Accept: */*
Accept-Language: en-us
Host: www.google.com

(there are other parts to it, but really this is all that matters.)  My tomcat responds with

HTTP/1 1 400 No Host matches server name www.google.com
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Sat, 22 Jul 2006 20:10:26 GMT
Connection: close

Because, of course, my server host name is not www.google.com.

I've read the documentation and a good deal of the source code and now understand that org.apache.catalina.core.StandardEngine
has associated with it a set of Hosts each which is configured with one or more host names
(usually one but org.apache.catalina.core.StandardHost supports 'host name aliases').  If
the Engine cannot find a host matching the "Host" http header then it will respond back with
the result above.  (I guess it is a bit more complicated than this since my traces through
the code show other classes, like host-manager, getting in the mix.)

I expected that Tomcat could accomplish what I am trying to do purely with configuration but
after reading through the documentation, FAQs, and much of the catalina code, I can't find
the solution.  (The one solution that I have come up with, involving subclassing the org.apache.catalina.core.StandardHost
class and overriding the 'findChild' method, feels hacky and like I said -- I thought that
I should be able to do what I want using config only.)

To summarize - I would like to configure my tomcat instance to call my servlet independent
of the URL or http "host" header which tomcat receives.  Does anyone know how to do this?

Thanks.

Jason McHugh

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message