Hat man einen Varnish vor seinem Apache2 laufen bemerkt man schnell im access.log folgende Einträge:

access.log
1
192.168.1.8 - - [25/Sep/2013:20:48:03 +0200] "GET /templates/css/yaml/core/base.css HTTP/1.1" 200 3032 "http://www.domain.de/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36"

Bei genauerem hinschauen fällt einem auf, dass dort eine private IP Adresse steht oder auch die IP des Localhost 127.0.0.1. Dies möchte man jedoch im Normalfall nicht, sondern die IP des aufrufenden Clients. Abhilfe schafft hier das Apache Modul mod_rpaf.

Installation:
1
apt-get install libapache2-mod-rpaf
Konfiguration:link
1
2
3
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.1.8

Varnish Konfiguration:

1
2
3
4
5
6
7
8
sub vcl_recv {

        # Set a unique cache header with client ip
        if (req.http.x-forwarded-for) {
                set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
        } else {
                set req.http.X-Forwarded-For = client.ip;
        }

Comments