Varnish and mod_deflate support

georgi.int at gmail.com georgi.int at gmail.com
Wed Dec 2 11:44:31 CET 2015


I figured out the problem and one stupid solution, but I am not sure if 
I break something this way so I would like yo confirm that to me :) In 
the following peace of code when I comment the unset everything works fine:

if (req.http.Accept-Encoding) {
     if (req.http.Accept-Encoding ~ "gzip") {
       # If the browser supports it, we'll use gzip.
       #set req.http.Accept-Encoding = "gzip";
#      unset req.http.Accept-Encoding;
     }
     else if (req.http.Accept-Encoding ~ "deflate") {
       # Next, try deflate if it is supported.
       set req.http.Accept-Encoding = "deflate";
     }
     else {
       # Unknown algorithm. Remove it and send unencoded.
       unset req.http.Accept-Encoding;
     }
}

Why and am I break something this way? Can I remove it ?

On 12/02/2015 03:58 AM, Jason Price wrote:
> Well, you'll need to figure out why the backend served a 404 request, 
> despite a valid looking Accept-Encoding header.
>
> The above gives you all the details about the request, so you can turn 
> that into a curl request directly to the backend in question.  That 
> will give you a triage tool. When you figure out why the curl request 
> fails, that will give you a hint as to what you need to change in your 
> VCL (or apache) config.
>
> Could it be as simple as mod_deflate not accepting gzip, but 
> preferring the previous compression?  (I know nothing of mod_deflate)
>
> -Jason
>
> On Tue, Dec 1, 2015 at 2:47 AM, georgi.int at gmail.com 
> <mailto:georgi.int at gmail.com> <georgi.int at gmail.com 
> <mailto:georgi.int at gmail.com>> wrote:
>
>     Thank you about your reply.
>
>     1. I understand, but the process for migrating is not so fast,
>     because of compile all from source including all vmods, building
>     new rpms and distributing them on many servers. Also, I am not
>     sure that this is the only one solution :)
>
>     2. The pipe was only for the test to see if only on the backends
>     will work. Now it's not piped, but the cache is stopped (it's all
>     the time stopped, because I use it only as a firewall for apache).
>
>     3. I wouild like to ask you to see this peace of log, because I
>     can't find anything anoying in it, but I am completely new to
>     varnish so it's possible I miss something. I see that here it's
>     accepting encoding gzip:
>
>       32 TxHeader     b Host: mysite.com <http://mysite.com>
>        32 TxHeader     b User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux
>     i686; rv:42.0) Gecko/20100101 Firefox/42.0
>        32 TxHeader     b Accept:
>     text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
>        32 TxHeader     b Accept-Language: en-US,en;q=0.5
>        32 TxHeader     b X-Country-Code: BG
>        32 TxHeader     b X-Forwarded-For: IP, IP
>        32 TxHeader     b X-Varnish: 1218787819
>        32 TxHeader     b Accept-Encoding: gzip
>        32 RxProtocol   b HTTP/1.1
>        32 RxStatus     b 404
>        32 RxResponse   b Not Found
>        32 RxHeader     b Date: Tue, 01 Dec 2015 07:40:09 GMT
>        32 RxHeader     b Server: Apache/2.2.27 (Unix) /5.0
>     mod_ssl/2.2.27 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 mod_fastcgi/2.4.6
>        32 RxHeader     b Vary: Accept-Encoding
>        32 RxHeader     b Content-Encoding: gzip
>        32 RxHeader     b Content-Length: 248
>        32 RxHeader     b Connection: close
>        32 RxHeader     b Content-Type: text/html; charset=iso-8859-1
>        32 Fetch_Body   b 4(length) cls 0 mklen 1
>        32 Length       b 248
>        32 BackendClose b default
>        30 SessionOpen  c IP 59645  IP:80
>        30 ReqStart     c  IP 59645 1218787819
>        30 RxRequest    c GET
>        30 RxURL        c /favicon.ico
>        30 RxProtocol   c HTTP/1.1
>
>
>     I read that it's possible to turn off completely mod_deflate from
>     apache and use varnish built in compression, but at this time this
>     is not solution for our company so I am trying to find another.
>
>     Best regards,
>     Georgi
>
>
>     On 12/01/2015 02:35 AM, Jason Price wrote:
>>     First off, 3.0.7 is EOL.  Move to 4.x as soon as you can
>>
>>     Second, I'd leave the entire stanza out of VCL.  The varnish
>>     defaults handle compression without issue in most cases.  If the
>>     backend serves compressed data, it'll be cached as compressed,
>>     and served as compressed.
>>
>>     Third, once you 'pipe' a request, varnish does nothing other than
>>     packet forwarding.  It can't cache, it can't balance requests
>>     across backends, nothing.
>>
>>     If the above doesn't resolve your problem, try to capture a
>>     request Client and Backend side transaction in varnishlog.  That
>>     will help diagnose what the real problem is.
>>
>>     -Jason
>>
>>     On Mon, Nov 30, 2015 at 11:42 AM, georgi.int at gmail.com
>>     <mailto:georgi.int at gmail.com> <georgi.int at gmail.com
>>     <mailto:georgi.int at gmail.com>> wrote:
>>
>>         Hello,
>>         I have been using varnish 3.7 only as a proxy server for
>>         apache and have a following lines in default.vcl which should
>>         handle the encodings:
>>
>>         if (req.http.Accept-Encoding) {
>>             if (req.http.Accept-Encoding ~ "gzip") {
>>               # If the browser supports it, we'll use gzip.
>>               #set req.http.Accept-Encoding = "gzip";
>>               unset req.http.Accept-Encoding;
>>             }
>>             else if (req.http.Accept-Encoding ~ "deflate") {
>>               # Next, try deflate if it is supported.
>>               set req.http.Accept-Encoding = "deflate";
>>             }
>>             else {
>>               # Unknown algorithm. Remove it and send unencoded.
>>               unset req.http.Accept-Encoding;
>>             }
>>         }
>>
>>         Although, customers which have mod_deflate rules in .htaccess
>>         file experience the problem that their sites are not
>>         compressed. If I pipe the site to apache site is compressed.
>>         SO, my question is what is the problem with the deflate and
>>         my varnish configuration? Is it required to add something
>>         other to varnish to work the deflate? I tried a couple of
>>         things which I found in the net, but nothing worked.
>>
>>         Thank you in advance for your answers!
>>
>>         Best regards,
>>         Georgi
>>
>>         _______________________________________________
>>         varnish-misc mailing list
>>         varnish-misc at varnish-cache.org
>>         <mailto:varnish-misc at varnish-cache.org>
>>         https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20151202/d676d340/attachment-0001.html>


More information about the varnish-misc mailing list