El pase de proxy para barniz no llega al caché

El pase de proxy para barniz no llega al caché

En mi servidor web tengo una instancia de barniz que me gustaría almacenar en caché en un sitio web alojado por un tercero (en blog.company.com/blog). Tengo un proxypass para esto ya que el resto del sitio está alojado localmente y me gustaría que el navegador lo enmascare para que parezca parte de nuestro sitio web (company.com/blog).

(/etc/httpd/conf.d/proxy.conf) ProxyTimeout 300

# Blog
ProxyPass /blog http://localhost:8000
ProxyPassReverse /blog http://localhost:8000

Y tengo el backend de barniz apuntando a blog.sugarsync.com:

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

La página se resuelve, pero esencialmente se redirige a blog.company.com/blog, y nunca llega al caché... Varnishlog muestra una función de "paso" cuando recibe la solicitud GET, lo que significa que no es cuál. es extraño porque estoy usando todos los comportamientos predeterminados en /etc/varnish/default.vcl fuera del backend personalizado, por lo que no debería pasarlos...

   11 SessionOpen  c 127.0.0.1 46485 0.0.0.0:8000
   11 ReqStart     c 127.0.0.1 46485 394102336
   11 RxRequest    c GET
   11 RxURL        c /
   11 RxProtocol   c HTTP/1.1
   11 RxHeader     c Host: localhost:8000
   11 RxHeader     c User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
   11 RxHeader     c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
   11 RxHeader     c Accept-Encoding: gzip,deflate,sdch
   11 RxHeader     c Accept-Language: en-US,en;q=0.8
   11 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
   11 RxHeader     c Cookie: __utmx=74837904.GQgj_x3FQCSgKU8YgJ937g$30088162-10:0; __utmxx=74837904.GQgj_x3FQCSgKU8YgJ937g$30088162-10:1351630608:15552000; __utmx=32887036.GQgj_x3FQCSgKU8YgJ937g$30088162-10:0; __utmxx=32887036.GQgj_x3FQCSgKU8YgJ937g$30088162-10:1351791703:155
   11 RxHeader     c scns-hdr-ip: 50.76.54.11
   11 RxHeader     c X-Forwarded-For: 10.5.112.22
   11 RxHeader     c X-Forwarded-Host: www.s.company.com
   11 RxHeader     c X-Forwarded-Server: www.company.com
   11 RxHeader     c Connection: Keep-Alive
   11 VCL_call     c recv
   11 VCL_return   c pass
   11 VCL_call     c pass
   11 VCL_return   c pass

Lo extraño es que cuando escribo el nombre de host directamente (nombre de host.company.com:8000 o company.com/blog), accede al caché de barniz correctamente, pero aún así se redirige la URL en el navegador. Los rizos a la URL correcta (www.company.com/blog) también llegan al caché. Los subdominios tampoco parecen funcionar... ¿qué está pasando aquí?

Respuesta1

El motivo passes que la lógica VCL predeterminada se niega a almacenar en caché cualquier cosa con Authorizationo Cookieen los encabezados de la solicitud, y su solicitud tiene un archivo Cookie.

if (req.http.Authorization || req.http.Cookie) {
    /* Not cacheable by default */
    return (pass);
}

Ese comportamiento predeterminado se debe a una extrema precaución, de modo que los servidores donde se devuelve contenido diferente para una página en respuesta a la sesión del usuario; Puedes modificar este comportamiento en tu vcl_recv. Implemente el suyo como una copia del predeterminado, pero elimine el req.http.Cookiecheque:

if (req.http.Authorization) {
    /* Not cacheable by default */
    return (pass);
}

En términos del comportamiento de redireccionamiento, parece que está recibiendo una 30xrespuesta, que es redirigir el navegador del cliente. ¿Puede proporcionar los registros de uno de esos accesos?

información relacionada