[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 15:20:33 MSD 2009
On Tue, Sep 15, 2009 at 08:04:49PM +0900, Zev Blut wrote:
> On 09/15/2009 07:28 PM, Igor Sysoev wrote:
> >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.
>
> Cool!
> This seems to work, although now requests from browsers that do not
> support compression get the Vary header. This is probably fine for our CDN.
>
> curl -o /dev/null -D - --compress
> http://localhost:8989/images/sprites/badge.png
>
> HTTP/1.1 200 OK
> Server: nginx/0.7.62
> Date: Tue, 15 Sep 2009 10:55:18 GMT
> Content-Type: image/png
> Content-Length: 20031
> Last-Modified: Tue, 08 Sep 2009 07:50:52 GMT
> Connection: keep-alive
> Expires: Wed, 16 Sep 2009 10:55:18 GMT
> Cache-Control: max-age=86400
> Accept-Ranges: bytes
>
>
> wget -S -O /dev/null http://localhost:8989/images/sprites/badge.png
>
>
> HTTP/1.1 200 OK
> Server: nginx/0.7.62
> Date: Tue, 15 Sep 2009 10:54:43 GMT
> Content-Type: image/png
> Content-Length: 20031
> Last-Modified: Tue, 08 Sep 2009 07:50:52 GMT
> Connection: keep-alive
> Vary: Accept-Encoding
> Expires: Wed, 16 Sep 2009 10:54:43 GMT
> Cache-Control: max-age=86400
> Accept-Ranges: bytes
>
>
> Any chance of getting a patch for 0.6?
The combined patch is attached (including the first one).
--
Igor Sysoev
http://sysoev.ru/en/
-------------- next part --------------
Index: src/http/modules/ngx_http_gzip_filter_module.c
===================================================================
--- src/http/modules/ngx_http_gzip_filter_module.c (revision 2448)
+++ src/http/modules/ngx_http_gzip_filter_module.c (working copy)
@@ -221,8 +221,7 @@
|| (r->headers_out.content_encoding
&& r->headers_out.content_encoding->value.len)
|| (r->headers_out.content_length_n != -1
- && r->headers_out.content_length_n < conf->min_length)
- || ngx_http_gzip_ok(r) != NGX_OK)
+ && r->headers_out.content_length_n < conf->min_length))
{
return ngx_http_next_header_filter(r);
}
@@ -241,6 +240,10 @@
found:
+ if (ngx_http_gzip_ok(r) != NGX_OK) {
+ return ngx_http_next_header_filter(r);
+ }
+
ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_gzip_ctx_t));
if (ctx == NULL) {
return NGX_ERROR;
Index: src/http/modules/ngx_http_gzip_static_module.c
===================================================================
--- src/http/modules/ngx_http_gzip_static_module.c (revision 2448)
+++ src/http/modules/ngx_http_gzip_static_module.c (working copy)
@@ -96,10 +96,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);
@@ -117,8 +123,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);
-
of.test_dir = 0;
of.valid = clcf->open_file_cache_valid;
of.min_uses = clcf->open_file_cache_min_uses;
@@ -137,6 +141,7 @@
case NGX_ENOTDIR:
case NGX_ENAMETOOLONG:
+ r->gzip = 0;
return NGX_DECLINED;
case NGX_EACCES:
More information about the nginx
mailing list