varnish+nginx as backend and real IP

With default config nginx all IP addresses shows as localhost.
Here is configuration to show real client IP.

Snippet from varnish config:

    sub vcl_pipe {
        set bereq.http.connection = "close";
        if (req.http.X-Forwarded-For) {
                set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;
        } else {
                set bereq.http.X-Forwarded-For = regsub(client.ip, ":.*", "");
          }
    }
    sub vcl_pass {
        set bereq.http.connection = "close";
        if (req.http.X-Forwarded-For) {
                set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;
        } else {
          set bereq.http.X-Forwarded-For = regsub(client.ip, ":.*", "");
          }
    }

Snippet from nginx config:

set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;

7 thoughts on “varnish+nginx as backend and real IP

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d