You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.1 KiB
50 lines
2.1 KiB
11 years ago
|
<b>Proxy HTTP requests in Apache 2.2 with mod_proxy and mod_balancer</b>
|
||
|
|
||
|
You can actually use an Apache web server as a front web server to proxy
|
||
|
specified requests to other web servers. For example to load balance your backend
|
||
|
servers or to make a failover system in case of an failure. Yes, we are talking
|
||
|
about high availability!
|
||
|
|
||
|
<b>Simple</b>
|
||
|
First enable the modules mod_proxy and mod_proxy_http. Now we can do a simple
|
||
|
request forward. Of course we use a Debian system, so to enable the proxy modules
|
||
|
we will do:
|
||
|
|
||
|
a2enmod proxy proxy_http
|
||
|
/etc/init.d/apache2 restart
|
||
|
|
||
|
Now we can make use of the proxy capabilities of Apache. Put the next part in
|
||
|
your virtual host or any other place.
|
||
|
|
||
|
ProxyPass /application http://servername:port/somethingelse/
|
||
|
ProxyPassReverse /application http://servername:port/somethingelse/
|
||
|
|
||
|
<b>Loadbalance and/or failover</b>
|
||
|
For this part we need some more modules. So we enable them. You can also enable
|
||
|
the ftp and ajp connectors if you need them. It's exactly the same as with the
|
||
|
mod_proxy_http.
|
||
|
|
||
|
a2enmod proxy proxy_http proxy_balancer
|
||
|
/etc/init.d/apache2 restart
|
||
|
|
||
|
Now we can have fun! The ProxyPreserveHost is technically not needed. But there
|
||
|
are some more options in the proxy module that makes life a little bit easier.
|
||
|
We will not proxy requests for /context/static. All the rest will be proxied to
|
||
|
the right server. Server1 is active now. Server2 is disabled. (maintenance?) So
|
||
|
if Server1 will fail, everybody is moved to a balanced cluster of Server3 and
|
||
|
Server4. I know, it's a little bit strange setup, but it's only an example.
|
||
|
|
||
|
ProxyPreserveHost On
|
||
|
ProxyPass /context/static !
|
||
|
ProxyPass /context balancer://clustername/something
|
||
|
|
||
|
<Proxy balancer://clustername>
|
||
|
BalancerMember http://servername1:port lbset=0 route=server1
|
||
|
# The next server is temporary disabled.
|
||
|
BalancerMember http://servername2:port lbset=0 route=server2 status=+D
|
||
|
#
|
||
|
# Backupservers if other servers failed
|
||
|
BalancerMember http://servername3:port lbset=1 route=server3
|
||
|
BalancerMember http://servername4:port lbset=1 route=server4
|
||
|
</Proxy>
|