<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hello,<br>
    <br>
    Please, I'm trying to use http_realip_module
    (<a class="moz-txt-link-freetext" href="http://wiki.nginx.org/NginxHttpRealIpModule#real_ip_header">http://wiki.nginx.org/NginxHttpRealIpModule#real_ip_header</a>) to get
    the X-Forwarded-For IP in my .php, but I'm suspecting something is
    wrong, because that looks like it should work.<br>
    <br>
    My setup is:<br>
    <br>
    LB &gt; Varnish FE network pool (10.110.0.0/22) &gt; Varnish BE -
    same server, another iface - (10.214.0.0/22) &gt; LB 10.214.0.0/22
    &gt; nginx BE pool 10.214.0.0/22<br>
    <br>
    When I set:<br>
    <br>
    <font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~
      \.php$ {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass 127.0.0.1:9000;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_index index.php;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include fastcgi_params;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param SCRIPT_FILENAME
      /net/nfs_parceiros_1/ftorres.com.br$fastcgi_script_name;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font><br>
    <br>
    <br>
    I get these values from my simple php test page:<br>
    <br>
    <font face="Courier New, Courier, monospace">&lt;?php<br>
      &nbsp;&nbsp;&nbsp; echo '&lt;table border="1"&gt;';<br>
      <br>
      &nbsp;&nbsp;&nbsp; foreach($_SERVER as $k =&gt; $v) {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo
'&lt;tr&gt;&lt;td&gt;'.$k.'&lt;/td&gt;&lt;td&gt;'.$v.'&lt;/td&gt;&lt;/tr&gt;';<br>
      &nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; echo '&lt;/table&gt;';<br>
      ?&gt;</font><br>
    <br>
    <br>
    <br>
    <font face="Courier New, Courier, monospace">SERVER_SOFTWARE&nbsp;&nbsp;
      &nbsp;nginx/0.8.53<br>
      REMOTE_ADDR&nbsp;&nbsp; &nbsp;10.214.3.250<br>
      SERVER_ADDR&nbsp;&nbsp; &nbsp;10.214.0.56<br>
      HTTP_X_FORWARDED_FOR&nbsp;&nbsp; &nbsp;10.214.0.47</font><br>
    <br>
    <br>
    When I set: <br>
    <br>
    <font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~
      \.php$ {<br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set_real_ip_from 10.214.0.0/22;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #set_real_ip_from 10.110.0.0/22;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; real_ip_header X-Forwarded-For;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass 127.0.0.1:9000;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_index index.php;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include fastcgi_params;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param SCRIPT_FILENAME
      /net/nfs_parceiros_1/ftorres.com.br$fastcgi_script_name;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font><br>
    <br>
    I get:<br>
    <br>
    <font face="Courier New, Courier, monospace">REMOTE_ADDR&nbsp;&nbsp;
      &nbsp;10.110.3.250<br>
      SERVER_ADDR&nbsp;&nbsp; &nbsp;10.214.0.56<br>
      HTTP_X_FORWARDED_FOR&nbsp;&nbsp; &nbsp;10.214.0.48</font><br>
    <br>
    <br>
    Oops, now I can see 10.110.0.0/22 (my front end network), but
    nothing about my x-forwarded-for, now I fixed it and add the FE
    network :<br>
    <br>
    <font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~
      \.php$ {<br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_header X-Fw-For $proxy_add_x_forwarded_for;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set_real_ip_from 10.214.0.0/22;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set_real_ip_from 10.110.0.0/22;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; real_ip_header X-Forwarded-For;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass 127.0.0.1:9000;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_index index.php;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include fastcgi_params;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param SCRIPT_FILENAME
      /net/nfs_parceiros_1/ftorres.com.br$fastcgi_script_name;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font><br>
    <br>
    <br>
    <br>
    Then, I get:<br>
    <br>
    <font face="Courier New, Courier, monospace">REMOTE_ADDR&nbsp;&nbsp;
      &nbsp;10.110.3.250<br>
      SERVER_ADDR&nbsp;&nbsp; &nbsp;10.214.0.56<br>
      HTTP_X_FORWARDED_FOR&nbsp;&nbsp; &nbsp;10.214.0.46</font><br>
    <br>
    <br>
    Any of these configurations shown the X-forwarded-for at remote_addr
    field, and the x-fw-for Header its working:<br>
    <br>
    <font face="Courier New, Courier, monospace">HTTP/1.1 200 OK<br>
      Server: nginx<br>
      Date: Fri, 10 Jun 2011 23:27:19 GMT<br>
      Content-Type: text/html<br>
      Connection: keep-alive<br>
      <b>X-Fw-For: 200.226.123.253, 10.110.3.250, 10.110.3.250</b></font><br>
    <br>
    <br>
    I fixed it adding the following configuration at fastcgi_param file:<br>
    <font face="Courier New, Courier, monospace"><br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set&nbsp; $addr&nbsp; $remote_addr;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($proxy_add_x_forwarded_for ~
      "^(?:^|,)\s*(\d+\.\d+\.\d+\.\d+)\s*") {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set&nbsp; $addr&nbsp; $1;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font><br>
    <br>
    <font face="Courier New, Courier, monospace">fastcgi_param&nbsp;
      HTTP_X_FORWARDED_FOR&nbsp;&nbsp;&nbsp; $addr;</font><br>
    <br>
    So Please, I'd like to know if http_realip_module is doing the job
    as it should or if these fixed issue should be ok for what I'm
    trying do do.<br>
    <br>
    Thanks and sorry about my english<br>
    <br>
    <br>
  </body>
</html>