The name I gave my solution
to a networking
/software development problem
that there are three servers
on a network
, server A with Apache
, server B with an Application Server
), and server C with a different HTTP
server that is not compatible with the Applications Server and must be used to handle processing of specific types of files.
In most cases, my standard answer would be to give them both separate IP addresses
or to use a router
and direct packets to the correct server for the request. The latter
requires both servers to be on separate port numbers
and have both run completely independently of each other.
There are issues
, however, with this solution. Since the development
was done in two very different technologies
, both must appear to come from the same source (due to cookies
) and appear to integrate seamlessly
. Average browsers
would accept the IP address as enough proof that both servers could access the same cookies. Netscape
was not as forgiving as Microsoft
, in their latest release
; it believes that each port is a different server (which it is).
The remedy is simple
and fairly straightforward
. It also allows for easy and more accurate security monitoring
(a single point of entry
A reverse proxy
in a networking sense, allows computers
(clients) within a local
network to access an outside network, the server on the outside network receives and responds to a request from the proxy server and returns it to the computer on the internal network that requested the data
. The server does not know the IP of the actual recipient
, but only knows the IP of the proxy.
The reverse proxy does the opposite
. For an incoming request to server A, if it is intended
for the local web server, it is handled locally. If it needs to be handled by server C, server A connects to server C, passes the request, waits for a response, and transmits the response to the client
. The header
must be hacked off
and the appropriate
header for server A is sent to the client
. Requests for server B are still handled the same way as before the implementation of the reverse proxy.
Now, to the client, server B, and server C, all believe that they are only communicating with server A.
This is different from load balancing
, where communication is distributed
servers to handle a greater number of requests than the single server could alone.