Mercurial > hg > nginx
changeset 3939:3cbbe86a7a95
referer_hash_max_size and referer_hash_bucket_size directives
patch by Witold Filipczyk
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 28 Jun 2011 10:40:44 +0000 |
parents | 1e90599af73b |
children | 22f3e9197096 |
files | src/http/modules/ngx_http_referer_module.c |
diffstat | 1 files changed, 32 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_referer_module.c +++ b/src/http/modules/ngx_http_referer_module.c @@ -29,6 +29,9 @@ typedef struct { ngx_flag_t blocked_referer; ngx_hash_keys_arrays_t *keys; + + ngx_uint_t referer_hash_max_size; + ngx_uint_t referer_hash_bucket_size; } ngx_http_referer_conf_t; @@ -54,6 +57,20 @@ static ngx_command_t ngx_http_referer_c 0, NULL }, + { ngx_string("referer_hash_max_size"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, + ngx_conf_set_num_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_referer_conf_t, referer_hash_max_size), + NULL }, + + { ngx_string("referer_hash_bucket_size"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, + ngx_conf_set_num_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_referer_conf_t, referer_hash_bucket_size), + NULL }, + ngx_null_command }; @@ -239,6 +256,8 @@ ngx_http_referer_create_conf(ngx_conf_t conf->no_referer = NGX_CONF_UNSET; conf->blocked_referer = NGX_CONF_UNSET; + conf->referer_hash_max_size = NGX_CONF_UNSET_UINT; + conf->referer_hash_bucket_size = NGX_CONF_UNSET_UINT; return conf; } @@ -260,6 +279,10 @@ ngx_http_referer_merge_conf(ngx_conf_t * #endif ngx_conf_merge_value(conf->no_referer, prev->no_referer, 0); ngx_conf_merge_value(conf->blocked_referer, prev->blocked_referer, 0); + ngx_conf_merge_uint_value(conf->referer_hash_max_size, + prev->referer_hash_max_size, 2048); + ngx_conf_merge_uint_value(conf->referer_hash_bucket_size, + prev->referer_hash_bucket_size, 64); return NGX_CONF_OK; } @@ -276,9 +299,16 @@ ngx_http_referer_merge_conf(ngx_conf_t * return NGX_CONF_ERROR; } + ngx_conf_merge_uint_value(conf->referer_hash_max_size, + prev->referer_hash_max_size, 2048); + ngx_conf_merge_uint_value(conf->referer_hash_bucket_size, + prev->referer_hash_bucket_size, 64); + conf->referer_hash_bucket_size = ngx_align(conf->referer_hash_bucket_size, + ngx_cacheline_size); + hash.key = ngx_hash_key_lc; - hash.max_size = 2048; /* TODO: referer_hash_max_size; */ - hash.bucket_size = 64; /* TODO: referer_hash_bucket_size; */ + hash.max_size = conf->referer_hash_max_size; + hash.bucket_size = conf->referer_hash_bucket_size; hash.name = "referers_hash"; hash.pool = cf->pool;