Hello, i replaced Squid by Varnish on web sites that are in production (like a lot of people here :)), and i haven't had any problems with those until the last one.
The issue is that when the client clicked on a link, the url was redirect towards the port 81 and given that varnish is listening on the port 80 the pages were not normally displayed. I don't understand how this could happen since when i was browsing myself i never had the same problem. However i looked in the varnishlog and here is the result : varnishncsa -c -r /var/log/varnish/diagnostic-port | grep ":81" 213.56.83.241 - - [01/Aug/2008:14:27:46 +0200] "GET http://www.website.com:81/football/fil-info/brann-ou-ventspils-pour-l-om-178141/ HTTP/1.1" 200 92149 "http://www.website.com/football/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" 213.56.83.241 - - [01/Aug/2008:14:29:12 +0200] "GET http://www.website.com:81/football HTTP/1.1" 301 239 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" 213.56.83.241 - - [01/Aug/2008:14:29:12 +0200] "GET http://www.website.com:81/football/ HTTP/1.1" 200 134824 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" Apache is listening on the same OS on the port 81, but transactions are not allowed on this port by the firewall. (The firewall is not on this computer). i am using the trunk version 2945. Varnish is listening on the 2 interfaces of the computer. The default file looks like this : VARNISH_LISTEN_ADDRESS= VARNISH_LISTEN_PORT=80 VARNISH_ADMIN_LISTEN_ADDRESS=localhost VARNISH_ADMIN_LISTEN_PORT=6082 VARNISH_MIN_THREADS=1 VARNISH_MAX_THREADS=1000 VARNISH_THREAD_TIMEOUT=120 VARNISH_STORAGE_FILE=/var/varnish/$INSTANCE/varnish_storage.bin VARNISH_STORAGE_SIZE=5G VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}" VARNISH_TTL=0 The VCL file : backend default { .host = "localhost"; .port = "81"; } sub vcl_recv { remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; set req.backend = default; if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed."; } lookup; } if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { pipe; } if (req.url ~ "\.(css|gif|jpg|jpeg|png|ico|swf|js)$") { lookup; } if (req.http.Expect) { pipe; } if (req.http.Authenticate) { pass; } if (req.request != "GET" && req.request != "HEAD") { pass; } if (req.http.Cache-Control ~ "no-cache") { pass; } set req.grace = 30s; lookup; } sub vcl_hash { set req.hash += req.url; set req.hash += req.http.host; hash; } sub vcl_hit { if (!obj.cacheable) { pass; } if (req.request == "PURGE") { set obj.ttl = 0s; error 200 "Purged."; } set obj.http.X-Cache = "HIT"; deliver; } sub vcl_fetch { if (!obj.valid) { error; } if (!obj.cacheable) { pass; } if (obj.http.Set-Cookie) { pass; } if (obj.http.Pragma ~ "no-cache" || obj.http.Cache-Control ~ "(no-cache|no-store|private)") { pass; } set obj.grace if (req.http.Authorization && !obj.http.Cache-Control ~ "public") { pass; } insert; } sub vcl_deliver { set resp.http.Via = "Varnish"; deliver; } I have the same configuration, except for the "VARNISH_LISTEN_ADDRESS=" line, on other sites and this url redirecting on port 81 never happened before. And as i said before, while i was browsing myself on this website, i didn't encounter this issue. I don't know if it is random, if it comes from the browser of the client, from the loadbalancer, from the max_threads or from another thing. Have you any idea about this ? Before trying to add a rule that searches for ":81" and remove it in the url, i wanted to have your opinion and know if someone had already seen this problem. Best regards, -- Damien Sarazin _______________________________________________ varnish-misc mailing list [email protected] http://projects.linpro.no/mailman/listinfo/varnish-misc
