You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Travis Sidelinger <tr...@ilive4code.net> on 2008/02/09 14:26:08 UTC

[users@httpd] mod_rewrite + mod_proxy troubles

We have a working production mod_proxy_balancer configuration for two 
backend web servers that is working great, except...  The backend web 
servers need the IP address of the clients to identify their location.

Yes, I had suggested just adding a location drop down so that users 
could select their own location.  Too inconvenient for the end user they 
say.

They want "c_loc=xxx" added to the URL at the load balancer.  Okay, this 
sounds like a job for mod_rewrite.  This should be easy enough.

mod_proxy works great, mod_rewrite works great, I put the to together 
and they seem to not like each other.

Below is one of the many configurations I've tried.  The best I can get 
is the URI components are mixed up incorrectly.  Any ideas?

My build of apache:
tar -xvzf httpd-2.2.8.tar.gz
cd httpd-2.2.8
CFLAGS="-O2" ./configure --enable-http --enable-info=shared \
--enable-ssl=shared --enable-rewrite=shared --enable-speling=shared \
--enable-cgi=shared --enable-deflate=shared --enable-disk-cache=shared \
--enable-cache=shared --enable-proxy=shared --enable-proxy-http=shared \
--enable-proxy-balancer=shared --prefix=/vol/devl/loadbalancer
make
make install

<VirtualHost catalog-devl.tld.org:81>
    ServerName catalog-devl.tld.org
    LogLevel debug

    <Proxy *>
        AddDefaultCharset off
        Order Allow,Deny
        Allow from all
    </Proxy>

    <Location /balancer-manager>
        SetHandler balancer-manager
        Order Allow,Deny
        Allow from 192.168.200.0/24 192.168.222.0/24 192.168.223.0/24 
192.168.220.13
    </Location>

    <Location />
        Order Allow,Deny
        Allow from 192.168.0.0/16 172.16.0.0/12
    </Location>

    # Add the client's location number to the URL
    RewriteEngine On
    # Large list of locations goes here.  List removed to shorten for email
    RewriteCond %{REMOTE_HOST}  ^192\.168\.1\.[5-8]
    RewriteRule /.*\.aspx?\? 
http://catalog-devl.tld.org%{REQUEST_URI}&c_loc=730 [L]
    RewriteCond %{REMOTE_HOST}  ^192\.168\.220\.
    # Here are things I have tried
    RewriteRule "^/(.*)$" proxy:balancer://aquabrowser$1&c_loc=220" 
[QSA,L]   # I get 404 Error: "GET //cd/README&c_loc=220%22?test=1 
HTTP/1.1" in the logs of the backend server.
    RewriteRule "^(.*\?.*)$" 
"http://catalog1.tld.org%{REQUEST_URI}&c_loc=220" [L,P]  # I get 404 
Error: "GET /cd/README&c_loc=220?test=1 HTTP/1.1" in the logs of the 
backed server.
    # This is a long list other things I have tried.  Nothing seems to work.

    ProxyRequests Off
    ProxyVia On
    ProxyPreserveHost On

    ProxyPass /balancer-manager !

    # Catalog Development
    ProxyPass / balancer://aquabrowser/
    <Proxy balancer://aquabrowser>
        BalancerMember http://catalogdev.tld.org:80 min=1 smax=20 
loadfactor=5
        #BalancerMember http://catalog1.tld.org:80 min=1 smax=20 
loadfactor=5 route=CAT1
        #BalancerMember http://catalog2.tld.org:80 min=1 smax=20 
loadfactor=5 route=CAT2
        ProxySet lbmethod=byrequests
        ProxySet stickysession=ABbalancer
        ProxySet nofailover=Off
        ProxySet maxattempts=3
        ProxySet timeout=5
        Order Allow,Deny
        Allow from 192.168.0.0/16 172.16.0.0/12

    </Proxy>
    ProxyPassReverse / http://catalogdev.tld.org
    #ProxyPassReverse / http://catalog1.tld.org
    #ProxyPassReverse / http://catalog2.tld.org
</VirtualHost>


Travis Sidelinger


---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org