Skip to content

Commit e7677b2

Browse files
author
Andre
committed
Add support for srcache_store_max_size
1 parent 98beb5c commit e7677b2

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

README

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ Known Issues
9494
set $key ...;
9595
srcache_fetch GET /memc $key;
9696
srcache_store PUT /memc $key;
97+
srcache_store_max_size 1m;
9798

9899
# proxy_pass/fastcgi_pass/...
99100
}
@@ -114,7 +115,7 @@ Directives
114115

115116
srcache_store
116117

117-
srcache_store_max_size (TODO)
118+
srcache_store_max_size
118119

119120
Installation
120121
1. Grab the nginx source code from nginx.net (< http://nginx.net/ >), for

src/ngx_http_srcache_filter_module.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,14 @@ static ngx_command_t ngx_http_srcache_commands[] = {
7070
offsetof(ngx_http_srcache_loc_conf_t, store),
7171
NULL },
7272

73+
{ ngx_string("srcache_store_max_size"),
74+
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
75+
|NGX_CONF_TAKE1,
76+
ngx_conf_set_size_slot,
77+
NGX_HTTP_LOC_CONF_OFFSET,
78+
offsetof(ngx_http_srcache_loc_conf_t, store_max_size),
79+
NULL },
80+
7381
ngx_null_command
7482
};
7583

@@ -197,6 +205,14 @@ ngx_http_srcache_header_filter(ngx_http_request_t *r)
197205
return ngx_http_next_header_filter(r);
198206
}
199207

208+
if (slcf->store_max_size != NGX_CONF_UNSET_SIZE
209+
&& r->headers_out.content_length_n >= (int) slcf->store_max_size) {
210+
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
211+
"bypass because of too large content: %d (limit is: %d)",
212+
r->headers_out.content_length, slcf->store_max_size);
213+
return ngx_http_next_header_filter(r);
214+
}
215+
200216
dd("try to save the response header");
201217

202218
if (r != r->main) {
@@ -457,6 +473,8 @@ ngx_http_srcache_create_loc_conf(ngx_conf_t *cf)
457473

458474
slcf->buf_size = NGX_CONF_UNSET_SIZE;
459475

476+
slcf->store_max_size = NGX_CONF_UNSET_SIZE;
477+
460478
return slcf;
461479
}
462480

@@ -473,6 +491,9 @@ ngx_http_srcache_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
473491
ngx_conf_merge_size_value(conf->buf_size, prev->buf_size,
474492
(size_t) ngx_pagesize);
475493

494+
ngx_conf_merge_size_value(conf->store_max_size, prev->store_max_size,
495+
NGX_CONF_UNSET_SIZE);
496+
476497
return NGX_CONF_OK;
477498
}
478499

src/ngx_http_srcache_filter_module.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ typedef struct {
2929
ngx_http_srcache_request_t *fetch;
3030
ngx_http_srcache_request_t *store;
3131
size_t buf_size;
32+
size_t store_max_size;
3233

3334
unsigned postponed_to_access_phase_end;
3435
} ngx_http_srcache_loc_conf_t;

0 commit comments

Comments
 (0)