[BULK] Re: Ways to control the gzip_vary directive from nginx 0.6.34 and above?

Igor Sysoev is at rambler-co.ru
Tue Sep 15 14:28:08 MSD 2009


On Tue, Sep 15, 2009 at 02:05:35PM +0400, Igor Sysoev wrote:

> On Tue, Sep 15, 2009 at 01:54:53PM +0400, Igor Sysoev wrote:
> 
> > On Tue, Sep 15, 2009 at 06:33:38PM +0900, Zev Blut wrote:
> > 
> > > Hello,
> > > 
> > > 
> > > On 09/15/2009 05:23 PM, Igor Sysoev wrote:
> > > >On Tue, Sep 15, 2009 at 04:20:48PM +0900, Zev Blut wrote:
> > > 
> > > >>I have attached a debug log from 0.6.39 that has the Vary when it should
> > > >>not.  If you would like I can also attach a debug log from 0.6.32 that
> > > >>does not include the Vary (which is what I need).
> > > >
> > > >This bug was fixed in 0.7.9.
> > > >The attached patch fixes it in 0.6.x, if you prefer to stay on this 
> > > >version.
> > > 
> > > Thank you for the patch!
> > > Unfortunately, it nor does the latest 0.7.62 seem to fix it.
> > > I am still getting the Vary: Accept-Encoding header for non gzip stuff.
> > > In both this patch and with 0.7.62

> > I could not reproduce these responses on 0.8.15, 0.7.62 and patched 0.6.39.
> > Are you sure that you have no "image/png" in gzip_types ?
> 
> Sorry, I missed "gzip_static on": it caused the problem.

The attached patch fixes this bug on 0.8.15 and 0.7.62.


-- 
Igor Sysoev
http://sysoev.ru/en/
-------------- next part --------------
Index: src/http/modules/ngx_http_gzip_static_module.c
===================================================================
--- src/http/modules/ngx_http_gzip_static_module.c	(revision 2451)
+++ src/http/modules/ngx_http_gzip_static_module.c	(working copy)
@@ -95,10 +95,16 @@
 
     gzcf = ngx_http_get_module_loc_conf(r, ngx_http_gzip_static_module);
 
-    if (!gzcf->enable || ngx_http_gzip_ok(r) != NGX_OK) {
+    if (!gzcf->enable) {
         return NGX_DECLINED;
     }
 
+    clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
+    if (clcf->gzip_vary && ngx_http_gzip_ok(r) != NGX_OK) {
+        return NGX_DECLINED;
+    }
+
     log = r->connection->log;
 
     p = ngx_http_map_uri_to_path(r, &path, &root, sizeof(".gz") - 1);
@@ -116,8 +122,6 @@
     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0,
                    "http filename: \"%s\"", path.data);
 
-    clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
-
     ngx_memzero(&of, sizeof(ngx_open_file_info_t));
 
     of.directio = clcf->directio;
@@ -138,6 +142,7 @@
         case NGX_ENOTDIR:
         case NGX_ENAMETOOLONG:
 
+            r->gzip = 0;
             return NGX_DECLINED;
 
         case NGX_EACCES:


More information about the nginx mailing list