Varnish 3 | X-forwarded-for sometimes not set
David B.
haazeloud at gmail.com
Tue Aug 19 11:40:31 CEST 2014
Hi Varnish users,
I'm facing out an issue since several weeks and I can't figure how to
correct this. :(
I hope someone can explain me what's I'm doing wrong.
Setup is quite simple :
client request an web page though http => varnish (cache or pass) =>
backend (apache)
Sometimes, x-forwarded-for was not set and apache recieve an empty
x-forwarded-for header.
This trigger an alarm on my monitoring system. Backend must have
client-ip for legal reason.
This happens only a few times per hour. :(
This morning, theses errors were seen with very large URI.
Perhaps large URI can hit a buffer length and there's no more room space
left for x-forwarded-for ?
Sometimes, this can happen with short uri as well. :(
Varnishlog extract :
446 ReqStart c (client ip here) 63424 998725987
446 RxRequest c GET
446 RxURL c
/forums/T2dnUwACAAAAAAAAAACPiNfnAAAAABCLD7gBHgF2b3JiaXMAAAAAAkSsAAD/////APQBAP////+4AU9nZ1MAAAAAAAAAAAAAj4jX5wEAAABuORkUE//q/////////////////////zwDdm9yYmlzDQAAAExhdmY1NS40NC4xMDAJAAAAHwAAAGVuY29kZXI9TGF2YzU1LjY4LjEwMCBsaWJ2b3JiaXMZAAAAdGl0bGU9U3ludGhldGl
446 RxProtocol c HTTP/1.1
446 RxHeader c Host: www.myhost.com
446 RxHeader c Connection: keep-alive
446 RxHeader c Accept-Encoding: identity;q=1, *;q=0
446 RxHeader c User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125
Safari/537.36 OPR/23.0.1522.75
446 RxHeader c Accept: */*
446 RxHeader c Referer: http://www.myhost.com/mypage.html
446 RxHeader c Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
446 RxHeader c Cookie: (some cookie here, not much)
446 RxHeader c Range: bytes=0-
446 VCL_call c recv pass
446 VCL_call c hash
446 Hash c
/forums/T2dnUwACAAAAAAAAAACPiNfnAAAAABCLD7gBHgF2b3JiaXMAAAAAAkSsAAD/////APQBAP////+4AU9nZ1MAAAAAAAAAAAAAj4jX5wEAAABuORkUE//q/////////////////////zwDdm9yYmlzDQAAAExhdmY1NS40NC4xMDAJAAAAHwAAAGVuY29kZXI9TGF2YzU1LjY4LjEwMCBsaWJ2b3JiaXMZAAAAdGl0bGU9U3ludGhldG
446 Hash c www.myhost.com
446 VCL_return c hash
446 VCL_call c pass pass
446 Backend c 39 www www3
446 TTL c 998725987 RFC -1 -1 -1 1408439635 0 1408439634 0 0
446 VCL_call c fetch
446 TTL c 998725987 VCL -1 3600 -1 1408439635 -0
446 TTL c 998725987 VCL 120 3600 -1 1408439635 -0
446 VCL_return c hit_for_pass
446 ObjProtocol c HTTP/1.1
446 ObjResponse c Request-URI Too Large
446 ObjHeader c Date: Tue, 19 Aug 2014 09:13:54 GMT
446 ObjHeader c Server: Apache
446 ObjHeader c Content-Length: 26
446 ObjHeader c Content-Type: text/html; charset=iso-8859-1
446 VCL_call c deliver deliver
446 TxProtocol c HTTP/1.1
446 TxStatus c 414
446 TxResponse c Request-URI Too Large
446 TxHeader c Content-Type: text/html; charset=iso-8859-1
446 TxHeader c Content-Length: 26
446 TxHeader c Accept-Ranges: bytes
446 TxHeader c Date: Tue, 19 Aug 2014 09:13:54 GMT
446 TxHeader c Age: 0
446 TxHeader c Connection: keep-alive
446 TxHeader c Cache-Control: , no-transform
446 TxHeader c X-Cache: MISS
446 Length c 26
446 ReqEnd c 998725987 1408439634.963270903
1408439634.964049816 2.867349625 0.000756264 0.000022650
Apache (backend) log extract :
192.168.0.3 - [19/Aug/2014:11:13:54 +0200] "GET
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pFJSKQUAgB04AIAdWAiFhqwEAPIAAAhjlGKMMeckQkox5pxzEiGlGHPOOakUY84555yUkjHnnHNOSumYc845J6VkzDnnnJNSOuecc85JKaV0zjnnpJRSQugcdFJKKZ1zDkIBAEAFDgAAATaKbE4wElRoyEoAIBUAwOA4lqVpnieKpmlJkqZ5nueJpqpqkqRpnieKpqmqPM/zRFEUTVNVeZ7niaIomqaqcl1RFEXTNE1VJcuiaIqmqaqqC9M0TdNUVdeFaZqmaaqq68K2VVVVXdd1Yduqqqqu68rAdV3XdWUZyK7ruq4sCwAAT3AAACqwYXWEk6KxwEJDVgIAGQAAhDEIKYQQUsggpBBCSCmFkAAAgAEHAIAAE8pAoSErAYBUAACAEGuttdZaaw1j1lprrbXWEuestdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbVWACB2hQPAToQNqyOcFI0FFhqyEgAIBwAAjEGIMegklFJKhRBj0ElIpbUYK4QYg1BKSq21mDznHIRSWmotxuQ55yCk1FqMMSbXQkgppZZii7G4FkIqKbXWYqzJGJVSai22GGvtxaiUSksxxhhrMMbm1FqMMdZaizE6txJLjDHGWoQRxsUWY6y11yKMEbLF0lqttQZjjLG5tdhqzbkYI4yuLbVWa80FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAAAiGlGGPMOeeccw5CCKlSjDnnHIQQQgihlFJSpRhzzjkIIYRQQimlpIwx5hyEEEIIpZRSSmkpZcw5CCGEUEoppZTSUuuccxBCCKWUUkopJaXUOecghFBKKaWUUkpKLYQQQiihlFJKKaWUlFJKIYRQSimllFJKKamllEIIpZRSSimllFJSSimFEEIppZRSSimlpJRaK6WUUkoppZRSSkkttZRSKKWUUkoppZSSWkoppVJKKaWUUkopJaXUUkqllFJKKaWUUkpLqaWUSimllFJKKaWUlFJKKaVUSimllFJKKSml1FpKKaWUSimllFJaaymlllIqpZRSSimltNRaay21lEoppZRSSmmttZRSSimVUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIAZAAADKOUUkktRYIipRiklkIlFXNQUooocw5SrKlCziDmJJWKMYSUg1QyB5VSzEEKIWVMKQatlRg6xpijmGoqoWMMAAAAQQAAgZAJBAqgwEAGABwgJEgBAIUFhg4RIkCMAgPj4tIGACAIkRkiEbEYJCZUA0XFdACwuMCQDwAZGhtpFxfQZYALurjrQAhBCEIQiwMoIAEHJ9zwxBuecIMTdIpKHQgAAAAAgAMAPAAAJBtAREQ0cxwdHh8gISIjJCUmJygCAAAAAOAGAB8AAEkKEBERzRxHh8cHSIjICEmJyQlKAAAggAAAAAAACCAAAQEBAAAAAIAAAAAAAQFPZ2dTAASAawAAAAAAAI+I1+cCAAAASTGGUh84NivetbfEtszRzMi/raykkZOGd3BtaGVfXlVST0cBhCU/+d9jyhKbsOQn/3tMVWKzwUcoWKuddrUxxbibFw3v169boyCIBA29/x+8aOj/GRHz5xsewX8UVhe/44PJVGF18Ts+mExtU2iAaVe7WrXIYqMBdqDYMQzO5ozvu199vV6v1y+vXkUiDhyH4gGccq+/tzP56Cn3+ns7kw+eCzCDCIACFJ96Y0NQegyjiRC1MYoIgRfgQ6MZuugdB57SYipl4WyxrpDoHQdfUpkK7A08I7KorVQrZVEWGQAA+0gMU5kpBtkAGAAAAAAAAEAtTjRBLU5ZAyIjqwgUWTjB9D7aGXe930bVOjDevu0+R+33vGaveXPfL/71693a6Ydubu5vDruYLx7+fdTifh2mzhlci7DToA7JKMzAmcU1JEXuG+0+l3FmoQHQqgJ6JE8hAZo1MYeGnQN1dv2SGir5Gr5X0lMne82umg2bG0rzWLkRX05QBTITm8vzz1Lk5syuhl3kT00yAAX3TAHNgKxaADzdxiAMcAEc/ug9ht9lLBf/Xw/OSQaN3XXwISNCQi+MDTyA59PFtsd6ePFTcWNquk9cARgMshkmMchGNgAAAAAAAAAAAACAD+Xy9XCu2BwnDNcltv1vIgeLi1Janey5d+7kfiSX8+bywapX38pRkHzN6+/rVx2VVeTiLXUsTOQ6zF35Y/SzMJlVRz1Y6kIBWAB8GaUZgMNSMfUD2PNxnfbAFPRKAjAM1vEtsLfqxeLvtm22B2ngbLjJAhrsGr7InQef0rMuwc9JOSkugdk++Ja66eL7a3B22hQ46KPvfIh12aO9X+6XW07IZphKDAMAAAAAAAAAAJtUJte5JN0p3QsAAJ/xHzd/Hv77kaxlsbIO2bKVpKb2YMjtfOOsx7q3h+JzSjRdk0U65VK79F1ZB1/AFAkAVH1RAMBZ3cqWCgLzu4niVftAbweavtJVA2SRZxiiIu+428VAAUlVUUVSXEXfMEDVctzbJnpwUZU1AMEYFSpABd5nnYae0q66eF+b+6QFfdY+8Ja6WeL/Z+A+qWvhYFjtda03/3bx7bvn7/fd6WGgquIMwzCVGAAAAAAAAAAAgPr3TuH+wbq3H671u1Et9mX5VlZ+trc0LlwDAICI5Pwvn1mqEVRfdC3v58zZwf9MgUjw2TsSGby374vDOhvdgsdVgwXwtAMAFgCAnZHERV+q03Z8N8D5GTvLz6wpFu1MYKAn689V5J5n6Lgmq09jYKise2b35C3W8tRB6/4/Yx1AoQ91wQWeR53zL5EBlPj7eHOf1CCPOg9/Sssb+//aPE9qcNCXi37fnH/TxNeXL18+nEB9l2tiGIZlGAAAAAAAAAAAgN6k3+OX1Jef4V1Hsvx8si7++e3n7uaoWwQAoOPi/fbw9z8nZ55D7/oe3Uu8X9TkXRQQeNUz6MnzRpzPFFzM1wBNJUfHsHRVGKgAKAAAAAsAgx57hqeCxUBIoweOcb/n1n5O5e2kGtInNRjVefe/eT7QQ6HBWg0AAP72nDZ4yxhu9v9iOKlBXHQeekq7aBL+2jwP8AB0Wcbaqz/vcXxRvpy8zfPxWLsfPeKV2MQwDLIBAAAAAAAAAAAAQIKUxaXts46LD/e/2jujM7T"
414 201 "-" "-"
This is not a "normal" URI for us, but I'm still getting requests like
theses. :(
OS : Linux Debian
# /usr/sbin/varnishd -V
varnishd (varnish-3.0.5 revision 1a89b1f)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2011 Varnish Software AS
varnish deamon command line :
/usr/sbin/varnishd -P /var/run/varnishd.pid -a :80 -T localhost:6082 -f
/etc/varnish/default.vcl -S /etc/varnish/secret -w 25,2000 -s malloc,28G
-p thread_pool_add_delay=2 -p thread_pools=2 -p session_linger=100
Varnish default.vcl :
# cat /etc/varnish/default.vcl
acl purge {
"localhost";
"192.168.0.0"/24;
}
probe healthcheck {
.request =
"GET /up.txt HTTP/1.1"
"Host: www.myhost.com"
"Connection: close";
.timeout = 5s;
.interval = 30s;
.window = 10;
.threshold = 8;
}
backend www2 {
.host = "192.168.0.2";
.port = "80";
.probe = healthcheck;
}
backend www3 {
.host = "192.168.0.3";
.port = "80";
.probe = healthcheck;
}
director www round-robin {
{ .backend = www2; }
{ .backend = www3; }
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return (lookup);
}
# X-Forwarded-For
if (req.http.X-Forwarded-Proto !~ "https")
{
remove req.http.X-Forwarded-For;
set req.http.X-Forwarded-For = client.ip;
}
# no cookie
if (
req.url == "/favicon.ico" ||
req.url ~ "^/css/" ||
req.url ~ "^/fonts/" )
{
remove req.http.Cookie;
}
if (req.http.host ~ "www.myhost.com$")
{
set req.backend = www;
}
if (req.http.Authorization || req.http.Cookie)
{
return(pass);
}
if (req.request != "GET" && req.request != "HEAD")
{
return(pass);
}
if (req.backend.healthy)
{
set req.grace = 30s;
}
else
{
set req.grace = 1h;
}
return (lookup);
}
sub vcl_fetch {
set beresp.grace = 1h;
if (beresp.status == 404 && req.restarts == 0)
{
return(restart);
}
if (beresp.http.X-Esi) {
set beresp.do_esi = true;
unset beresp.http.X-Esi;
}
return (deliver);
}
sub vcl_hit {
if (req.request == "PURGE")
{
purge;
error 200 "Purged.";
}
return (deliver);
}
sub vcl_miss {
if (req.request == "PURGE")
{
purge;
error 200 "Purged.";
}
return (fetch);
}
sub vcl_pass {
return(pass);
}
sub vcl_pipe {
set bereq.http.connection = "close";
return(pipe);
}
sub vcl_deliver {
remove resp.http.Via;
remove resp.http.X-Varnish;
remove resp.http.Server;
remove resp.http.X-Powered-By;
set resp.http.Cache-Control = resp.http.Cache-Control + ",
no-transform";
if (obj.hits > 0)
{
set resp.http.X-Cache = "HIT";
}
else
{
set resp.http.X-Cache = "MISS";
}
return (deliver);
}
Best Regards
David.
More information about the varnish-misc
mailing list