Hi,

Not a solution to below problem, but I found a very easy workaround. Posting it 
here in case it has relevance to other users.

Problem: HTTP and HTTPS goes to same cached FQDN. Varnish only does HTTP, how 
to pass HTTPS through to the backend?
Solution: xinetd can do this out of the box. Create a file in /etc/xinetd.d 
containing stuff like below and restart xinetd.

service some_unique_name
{
 type = UNLISTED
 flags = REUSE
 socket_type = stream
 wait = no
 user = root
 redirect = back.end.ip.address 443
 port = 443
}

A big caveat to this: You will not be able to cache HTTPS traffic. In my case 
that's not a problem but YMMV.


Lars

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Lars Jørgensen
Sent: Monday, June 20, 2011 11:20 AM
To: [email protected]
Subject: RE: Best practice for SSL passthrough?

>> Is that how it works? That seems pretty neat because then I can cache https
>> requests too.

>Yup, that's it exactly. And Nginx is pretty performant as well, so it 
>completes Varnish in that matter.

Great, I'll probably look into it.

So far I've found out that https is only really used in a redirect during 
login, and after that it's straight back to http. I have therefore no need to 
cache encrypted pages. If I can avoid learning new tech (nginx), I would prefer 
it at this point. So I did this:

backend default {
  .host = "1.2.3.62";
  .port = "80";
}

backend default_ssl {
  .host = "1.2.3.62";
  .port = "443";
}

sub vcl_recv {
  if (server.port == 443) {
    set req.backend = default_ssl;
    return(pipe);
  } else {
    set req.backend = default;
  }
  .
  .
  .
}

But it doesn't work, all I get is this:

   15 SessionOpen  c 10.6.0.18 52617 :443
   15 Debug        c herding

   15 SessionClose c timeout
   15 StatSess     c 10.6.0.18 52617 0 1 0 0 0 0 0 0
   15 SessionOpen  c 10.6.0.18 52622 :443
   15 Debug        c herding

   15 SessionClose c timeout
   15 StatSess     c 10.6.0.18 52622 0 1 0 0 0 0 0 0

Am I doing something obviously wrong? Is "server.port" not available in 3.0? I 
tried putting a std.log("HTTPS"); in the backend select statement above, but it 
doesn't get logged. Looks like that if-statement is wrong?


-- 
Lars

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

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

Reply via email to