A proxy is a piece of software that supports sending and receiving data
on behalf of another application. It’s an intermediate layer on your network
that receives requests from within the networks, forwards them to the
appropriate host, reads the response, and sends the response back to the
requesting host or application within the network.
There are 2 types of proxy available,
- A forward
proxy is an Internet-facing proxy used to retrieve from a wide range of
sources.
- A reverse
proxy is usually an Internet-facing proxy used as a
front-end to control and protect access to a server on a private network.
A reverse proxy commonly also performs tasks such as load-balancing,
authentication, decryption or caching.
In this article we will see how we can configure Apache as a Proxy server
that will connect to the back end Tomcat Servers. For the demo purpose I have
deployed 2 applications in the back end Tomcat server.
1. Build Apache server with
Proxy modules
Download the Apache HTTP server source
$ tar -xzvf httpd-2.0.36.tar.gz
$ cd /httpd
$ ./configure –enable-module=proxy
If you’re using Apache 2.0, you should use this instead:
$ ./configure –enable-proxy –enable-proxy-ftp
–enable-proxy-http –enable-cache –enable-disk-cache
Once the source tree has been prepped, you can compile and install Apache
with a quick
$ make
$ make install
2. Add Configurations to the Apache http.conf
a. make sure the LoadModule for the mod_proxy.so is added like
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
b. add the virtual host element
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /application1 http://localhost:8080/myApp/
ProxyPass /application2 http://localhost:8080/Sample-app/test.html
ProxyPassReverse /application1/ http://localhost:8080/myApp/
ProxyPassReverse /application2/ http://localhost:8080/Sample-app/test.html
ProxyPass /application1 http://localhost:8080/myApp/
ProxyPass /application2 http://localhost:8080/Sample-app/test.html
ProxyPassReverse /application1/ http://localhost:8080/myApp/
ProxyPassReverse /application2/ http://localhost:8080/Sample-app/test.html
</VirtualHost>
ProxyRequest and ProxyPassReverse
are the 2 elements that make the Reverse Proxy work.
# Disable forward proxy requests
ProxyRequests Off
# Configure reverse proxy requests for myApp
ProxyPass /application1 http://localhost:8080/myApp/
ProxyPassReverse /application1/
http://localhost:8080/myApp/
So now we have configured /application1 in Web server and when we access
http://localhost/application1
the web server will send the requests to
http://localhost:8080/myApp/
which is running
in back end Tomcat.
ProxyPass allows you to is basically take a request for a URL, and
forward it to another(Usually backend) server. Then it forwards the response
back to the client .The last ProxyPassReverse directive captures the responses
from the Tomcat server and masks the URL as it would be directly responded by
the Apache HTTPd hiding the identity/location of the Tomcat server.
More to Come
, Happy Learning J
No comments:
Post a Comment