add req.http.x-forwarded-for header

Andreas Götzfried revirii at googlemail.com
Thu Feb 7 09:03:44 CET 2013


Good Morning,

> I think varnishncsa reads the information in the shared memory log
> *before* your modification in the VCL. I can't test right now but if
> you follow both varnishlog and varnishncsa you might understand what
> happens.

Hm, but then the wished manipulation within vcl_recv (setting
x-forwarded-for and writing it into varnish log instead of client.ip)
won't work at all, as the logs are written before vcl_recv. Well, why
should it work, as varnishncsa reads the shared memory and writes the
log, and varnish itself reads shared memory and then starts with
vcl_recv.

https://www.varnish-cache.org/docs/trunk/reference/varnishncsa.html

Changing the parameters of the log daemon won't help either, as an
external request doesn't set x-forwarded-for-

> I have no idea if it would actually work but you could try to issue a
> restart to see whether it affects varnishncsa.
>
> if (!req.http.X-Forwarded-For) {
>     set req.http.X-Forwarded-For = client.ip;
>     return(restart);
> }

Message from VCC-compiler:
Invalid return "restart"
('input' Line 97 Pos 24)
                return(restart);
-----------------------#######--

...in subroutine "vcl_recv"
('input' Line 77 Pos 5)
sub vcl_recv {
----########--

...which is the "vcl_recv" method
Legal returns are: "error" "lookup" "pass" "pipe"

Seems illegal ;-)


thx
Andreas



More information about the varnish-misc mailing list