mirror of
https://github.com/nginx/nginx.git
synced 2026-06-24 19:06:48 +00:00
Gzip static: "always" parameter in "gzip_static" directive.
With "always" gzip static returns gzipped content in all cases, without checking if client supports it. It is useful if there are no uncompressed files on disk anyway.
This commit is contained in:
parent
23a959615e
commit
86aee85d2e
1 changed files with 32 additions and 10 deletions
|
|
@ -10,8 +10,13 @@
|
|||
#include <ngx_http.h>
|
||||
|
||||
|
||||
#define NGX_HTTP_GZIP_STATIC_OFF 0
|
||||
#define NGX_HTTP_GZIP_STATIC_ON 1
|
||||
#define NGX_HTTP_GZIP_STATIC_ALWAYS 2
|
||||
|
||||
|
||||
typedef struct {
|
||||
ngx_flag_t enable;
|
||||
ngx_uint_t enable;
|
||||
} ngx_http_gzip_static_conf_t;
|
||||
|
||||
|
||||
|
|
@ -22,14 +27,22 @@ static char *ngx_http_gzip_static_merge_conf(ngx_conf_t *cf, void *parent,
|
|||
static ngx_int_t ngx_http_gzip_static_init(ngx_conf_t *cf);
|
||||
|
||||
|
||||
static ngx_conf_enum_t ngx_http_gzip_static[] = {
|
||||
{ ngx_string("off"), NGX_HTTP_GZIP_STATIC_OFF },
|
||||
{ ngx_string("on"), NGX_HTTP_GZIP_STATIC_ON },
|
||||
{ ngx_string("always"), NGX_HTTP_GZIP_STATIC_ALWAYS },
|
||||
{ ngx_null_string, 0 }
|
||||
};
|
||||
|
||||
|
||||
static ngx_command_t ngx_http_gzip_static_commands[] = {
|
||||
|
||||
{ ngx_string("gzip_static"),
|
||||
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
|
||||
ngx_conf_set_flag_slot,
|
||||
ngx_conf_set_enum_slot,
|
||||
NGX_HTTP_LOC_CONF_OFFSET,
|
||||
offsetof(ngx_http_gzip_static_conf_t, enable),
|
||||
NULL },
|
||||
&ngx_http_gzip_static },
|
||||
|
||||
ngx_null_command
|
||||
};
|
||||
|
|
@ -92,11 +105,17 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
|
|||
|
||||
gzcf = ngx_http_get_module_loc_conf(r, ngx_http_gzip_static_module);
|
||||
|
||||
if (!gzcf->enable) {
|
||||
if (gzcf->enable == NGX_HTTP_GZIP_STATIC_OFF) {
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
rc = ngx_http_gzip_ok(r);
|
||||
if (gzcf->enable == NGX_HTTP_GZIP_STATIC_ON) {
|
||||
rc = ngx_http_gzip_ok(r);
|
||||
|
||||
} else {
|
||||
/* always */
|
||||
rc = NGX_OK;
|
||||
}
|
||||
|
||||
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
|
||||
|
||||
|
|
@ -169,10 +188,12 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
|
|||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
r->gzip_vary = 1;
|
||||
if (gzcf->enable == NGX_HTTP_GZIP_STATIC_ON) {
|
||||
r->gzip_vary = 1;
|
||||
|
||||
if (rc != NGX_OK) {
|
||||
return NGX_DECLINED;
|
||||
if (rc != NGX_OK) {
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
}
|
||||
|
||||
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "http static fd: %d", of.fd);
|
||||
|
|
@ -274,7 +295,7 @@ ngx_http_gzip_static_create_conf(ngx_conf_t *cf)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
conf->enable = NGX_CONF_UNSET;
|
||||
conf->enable = NGX_CONF_UNSET_UINT;
|
||||
|
||||
return conf;
|
||||
}
|
||||
|
|
@ -286,7 +307,8 @@ ngx_http_gzip_static_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|||
ngx_http_gzip_static_conf_t *prev = parent;
|
||||
ngx_http_gzip_static_conf_t *conf = child;
|
||||
|
||||
ngx_conf_merge_value(conf->enable, prev->enable, 0);
|
||||
ngx_conf_merge_uint_value(conf->enable, prev->enable,
|
||||
NGX_HTTP_GZIP_STATIC_OFF);
|
||||
|
||||
return NGX_CONF_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue