You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Laurent Vaills <la...@gmail.com> on 2010/09/12 21:45:15 UTC

[users@httpd] mod_remoteip and mod_rewrite interactions

Hi,

I use the module mod_remoteip (2.3.5) on Apache httpd 2.2 (Centos 5).
My Apache httpd is behind a load-balancer.

I have a strange behavior with mod_rewrite and mod_remoteip .

Here is a simple configuration for the virtual host that shows the strange
behaviour :
<VirtualHost *:9090>
   DocumentRoot "/var/www/html/"

   RemoteIPHeader X-Forwarded-For
   RemoteIPInternalProxy 10.76.98.0/24

   RewriteLog var/logs/rw.log
   RewriteLogLevel 9

   Options +FollowSymLinks +ExecCGI
   DirectoryIndex index.html
   <Directory "/var/www/html">
      RewriteEngine on
      RewriteRule ^(.*)$ index2.html [QSA,L]
   </Directory>
</VirtualHost>

The configuration is quite simple : whatever you requested, Apache always
serves the URI index2.html.

So when I run the following request "wget http://<public IP>:9090/". I
expect to see in the access log file my IP address, but instead this is the
IP address of the load-balancer :
1.1.1.1 -"GET / HTTP/1.1" 304 -

If I take a look at the RewriteLog file I can see the following :

2.2.2.2 [rid#2aaee84d3ab8/initial] (3) [perdir /var/www/html/] strip per-dir
prefix: /var/www/html/ ->
2.2.2.2 [rid#2aaee84d3ab8/initial] (3) [perdir /var/www/html/] applying
pattern '^(.*)$' to uri ''
2.2.2.2 [rid#2aaee84d3ab8/initial] (2) [perdir /var/www/html/] rewrite '' ->
'index2.html'
2.2.2.2 [rid#2aaee84d3ab8/initial] (3) [perdir /var/www/html/] add per-dir
prefix: index2.html -> /var/www/html/index2.html
2.2.2.2 [rid#2aaee84d3ab8/initial] (2) [perdir /var/www/html/] strip
document_root prefix: /var/www/html/index2.html -> /index2.html
2.2.2.2 [rid#2aaee84d3ab8/initial] (1) [perdir /var/www/html/] internal
redirect with /index2.html [INTERNAL REDIRECT]
1.1.1.1    [rid#2aaee84d85c0/initial/redir#1] (3) [perdir /var/www/html/]
strip per-dir prefix: /var/www/html/index2.html -> index2.html
1.1.1.1    [rid#2aaee84d85c0/initial/redir#1] (3) [perdir /var/www/html/]
applying pattern '^(.*)$' to uri 'index2.html'
1.1.1.1    [rid#2aaee84d85c0/initial/redir#1] (2) [perdir /var/www/html/]
rewrite 'index2.html' -> 'index2.html'
1.1.1.1    [rid#2aaee84d85c0/initial/redir#1] (3) [perdir /var/www/html/]
add per-dir prefix: index2.html -> /var/www/html/index2.html
1.1.1.1    [rid#2aaee84d85c0/initial/redir#1] (1) [perdir /var/www/html/]
initial URL equal rewritten URL: /var/www/html/index2.html [IGNORING
REWRITE]

My IP is known until the "[INTERNAL REDIRECT]" . So, my questions are :
- Is this internal redirect mandatory ?
- Is it normal that my IP address is lost after this redirect ?

I checked and the HTTP header X-Forwarded-For is correctly set.

Regards,
Laurent Vaills