Thank you for your quick response.

The version of Varnish is 2.1.4-2.el5
The IE version is 7.0.5370.13
Nothing is HTTPS.
The backends are on the same box as Varnish.  They do point to two different 
sites we are testing.
There is a load balancer a CITRIX NetScaler that is in front of Varnish.
I'm not sure if these sites use external components as I did not develop the 
site.  If this becomes an important issue, I will ask the developers.

One other note of interest.   In retesting everything before sending this 
email, I learned that everything is working using IE if I go directly to 
Varnish, however, again one of the two sites is not responding properly when I 
use IE and go through the CITRIX load balancer to Varnish.   I also had a 
co-worker test on a different machine.   He was using the same IE version.   He 
had the same results, however, for whatever reason he had trouble getting to 
the second website, but got to the first website just fine.   Essentially he is 
having trouble getting to the opposite site that I was having trouble getting 
to when testing through the CITRIX load balancer to Varnish.   Both sites do 
fine when connecting through CITRIX and make a direct connection to the web 
servers.

Is there any specific concerns with running Varnish behind a CITRIX load 
balancer?

Again, any help you can provide on troubleshooting this problem would be 
appreciated.


From: Caunter, Stefan [mailto:[email protected]]
Sent: Friday, February 04, 2011 10:58 AM
To: Bacion, Ray; [email protected]
Cc: OA.Lampadmins
Subject: RE: Varnish not completely loading page from IE 7 browser

We need to know which version of varnish.

Which  exact version of IE7? Does the page call external components? Anything 
https? Are the back ends the same? Is there a load balancer?

Stefan Caunter
Operations
Torstar Digital
m: (416) 561-4871


From: [email protected] 
[mailto:[email protected]] On Behalf Of Bacion, Ray
Sent: February-03-11 2:01 PM
To: '[email protected]'
Cc: OA.Lampadmins
Subject: Varnish not completely loading page from IE 7 browser

Hello, we have installed Varnish on one of our RedHat 5 Linux machines.   I 
have pasted the configuration below.    I did remove the real hostnames and IP 
addresses from the configuration.

The configuration works fine with Mozilla for sites I have defined, but on IE 7 
the "hostname1" site does not completely load.   I see the favicon.ico and the 
title of the page, but the site continues to load without completing or 
sometimes completing after a long time (minute plus) to load.   The second site 
"shared_73_165" loads just fine.

Please note a week ago I had the same sites defined, but IE had problems 
loading the "shared_73_165" site but loaded the "hostname1" site just fine.   I 
assume there is some slight difference in the configuration between this week 
and last to make this change occur, but I don't know what it would be.    
Mozilla has always loaded both sites fine.


I am having trouble identifying the root cause of the problem.   Can anyone 
help me with trying to determine why IE 7 is taking so long to complete the 
loading of the page if it completes at all?

I can also add that a when I look at the varnishncsa output I see that with IE 
7 that not all of the elements on the HTML page are being requested, but 
through Mozilla I do see all the requests.   I can also tell you both sites 
work fine if I bypass Varnish.   It also does appear that IE 8 has the same 
issue although I have not tested with it as much as I have IE 7.

Any help that someone can provide would be appreciated?



backend hostname1
{
  
.host="xxx.xxx.xxx.xxx";.port="80";.max_connections=200;.connect_timeout=10s;.first_byte_timeout=10s;
  .between_bytes_timeout=10s;
}
backend shared_73_165
{
  
.host="xxx.xxx.xxx.xxx";.port="80";.max_connections=200;.connect_timeout=10s;.first_byte_timeout=10s;
  .between_bytes_timeout=10s;
}

sub vcl_recv
{
  # Set Backend Server
  if (req.http.host ~ "^hostname1.com"     || req.http.host ~ 
"^test.hostname1.com")              { set req.backend = hostname1;  }
  else                                                                          
                                                                                
             { set req.backend = shared_73_165; }

  # Set HTTP Header NS-Client-IP so Apache can log client's IP address.
  set req.http.NS-Client-IP = client.ip;

  # If HTTP Header Cache-Contro="no-cache" then purge any cache page that may 
exist for that URL and pass request on.
  if (req.http.Cache-Control ~ "no-cache") { purge_url(req.url); return(pass); }

  # If request is not a valid HTTP Method pipe it to the backend it is not 
cacheable.
  if (req.request!="GET"    && req.request!="HEAD"    && req.request!="PUT"     
&& req.request!="POST" &&
      req.request!="TRACE"  && req.request!="OPTIONS" && req.request!="DELETE")
  { return (pipe); }  /*Non-RFC2616*/

  # If request is not a GET or a HEAD then pass it through since its not 
cacheable.
  if (req.request!="GET" || req.request!="HEAD") { return (pass); }

  # Unset cookies on Drupal specific files that should be cached.
  if (req.url ~ "^/(files|misc|sites|themes|modules)/" || req.url ~ 
"\.(txt|ico)$") { unset req.http.Cookie; }

  # If request requires Authentication or has a Cookie then it is not cacheable.
  if (req.http.Authorization || req.http.Cookie) { return (pass); }

  # Normalize and compress content if Encoding starts with gzip or defalte but 
do not compress binary files.
  # @see:  http://varnish.projects.linpro.no/wiki/FAQ/Compression
  if (req.http.Accept-Encoding) {
    if    (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") { remove 
req.http.Accept-Encoding; }
    elsif (req.http.Accept-Encoding ~ "gzip")   {set req.http.Accept-Encoding = 
"gzip"; }
    elsif (req.http.Accept-Encoding ~ "deflate"){set req.http.Accept-Encoding = 
"deflate"; }
    else                                        {unset 
req.http.Accept-Encoding; }
  }

  # If requested page is currently being processed on another thread to a 
backend server,  server cached page if its not older than 30s.
  set req.grace = 30s;

  # Fall back to the default vcl_recv which will call the return(lookup);
}

sub vcl_pipe
{
  set req.http.connection = "close";
  # Fall back to the default vcl_pipe which will call return(pipe);
}

sub vcl_fetch
{
  # If the response from the backend is not a 200, 203, 300, 301, 302, 404 or 
410.
  if (!beresp.cacheable) { return (pass); }
}
--------------------------------------------------------
Raymond Bacion

ITSD Operating System Group
Phone: (573) 522-1468
Fax :    (573) 522-1384
Email:  [email protected]

-------------------------------------------------------



_______________________________________________
varnish-misc mailing list
[email protected]
http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to