Mercurial > hg > nginx-vendor-0-7
comparison src/http/modules/ngx_http_limit_zone_module.c @ 502:89dc5654117c NGINX_0_7_63
nginx 0.7.63
*) Security: now "/../" are disabled in "Destination" request header
line.
*) Change: minimum supported OpenSSL version is 0.9.7.
*) Change: the "ask" parameter of the "ssl_verify_client" directive was
changed to the "optional" parameter and now it checks a client
certificate if it was offered.
Thanks to Brice Figureau.
*) Feature: now the "-V" switch shows TLS SNI support.
*) Feature: the $ssl_client_verify variable.
Thanks to Brice Figureau.
*) Feature: the "ssl_crl" directive.
Thanks to Brice Figureau.
*) Bugfix: the $ssl_client_cert variable usage corrupted memory; the
bug had appeared in 0.7.7.
Thanks to Sergey Zhuravlev.
*) Feature: now the start cache loader runs in a separate process; this
should improve large caches handling.
*) Feature: now temporary files and permanent storage area may reside
at different file systems.
*) Bugfix: nginx counted incorrectly disk cache size.
*) Change: now directive "gzip_disable msie6" does not disable gzipping
for MSIE 6.0 SV1.
*) Bugfix: nginx always added "Vary: Accept-Encoding" response header
line, if both "gzip_static" and "gzip_vary" were on.
*) Feature: the "proxy" parameter of the "geo" directive.
*) Feature: the ngx_http_geoip_module.
*) Feature: the "limit_rate_after" directive.
Thanks to Ivan Debnar.
*) Feature: the "limit_req_log_level" and "limit_conn_log_level"
directives.
*) Bugfix: now "limit_req" directive conforms to the leaky bucket
algorithm.
Thanks to Maxim Dounin.
*) Bugfix: in ngx_http_limit_req_module.
Thanks to Maxim Dounin.
*) Bugfix: now nginx allows underscores in a request method.
*) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did
not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate",
"X-Accel-Buffering", and "X-Accel-Charset" lines from backend
response header.
Thanks to Maxim Dounin.
*) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend
response header lines; the bug had appeared in 0.7.44.
Thanks to Maxim Dounin.
*) Feature: the "image_filter_transparency" directive.
*) Feature: the "image_filter" directive supports variables for setting
size.
*) Bugfix: in PNG alpha-channel support in the
ngx_http_image_filter_module.
*) Bugfix: in transparency support in the ngx_http_image_filter_module.
*) Feature: now several "perl_modules" directives may be used.
*) Bugfix: ngx_http_perl_module responses did not work in subrequests.
*) Bugfix: nginx sent '\0' in a "Location" response header line on
MKCOL request.
Thanks to Xie Zhenye.
*) Bugfix: an "error_page" directive did not redirect a 413 error; the
bug had appeared in 0.6.10.
*) Bugfix: in memory allocation error handling.
Thanks to Maxim Dounin and Kirill A. Korinskiy.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 26 Oct 2009 00:00:00 +0300 |
parents | 549994537f15 |
children |
comparison
equal
deleted
inserted
replaced
501:dc87c92181c7 | 502:89dc5654117c |
---|---|
31 | 31 |
32 | 32 |
33 typedef struct { | 33 typedef struct { |
34 ngx_shm_zone_t *shm_zone; | 34 ngx_shm_zone_t *shm_zone; |
35 ngx_uint_t conn; | 35 ngx_uint_t conn; |
36 ngx_uint_t log_level; | |
36 } ngx_http_limit_zone_conf_t; | 37 } ngx_http_limit_zone_conf_t; |
37 | 38 |
38 | 39 |
39 static void ngx_http_limit_zone_cleanup(void *data); | 40 static void ngx_http_limit_zone_cleanup(void *data); |
40 | 41 |
46 static char *ngx_http_limit_conn(ngx_conf_t *cf, ngx_command_t *cmd, | 47 static char *ngx_http_limit_conn(ngx_conf_t *cf, ngx_command_t *cmd, |
47 void *conf); | 48 void *conf); |
48 static ngx_int_t ngx_http_limit_zone_init(ngx_conf_t *cf); | 49 static ngx_int_t ngx_http_limit_zone_init(ngx_conf_t *cf); |
49 | 50 |
50 | 51 |
52 static ngx_conf_enum_t ngx_http_limit_conn_log_levels[] = { | |
53 { ngx_string("info"), NGX_LOG_INFO }, | |
54 { ngx_string("notice"), NGX_LOG_NOTICE }, | |
55 { ngx_string("warn"), NGX_LOG_WARN }, | |
56 { ngx_string("error"), NGX_LOG_ERR }, | |
57 { ngx_null_string, 0 } | |
58 }; | |
59 | |
60 | |
51 static ngx_command_t ngx_http_limit_zone_commands[] = { | 61 static ngx_command_t ngx_http_limit_zone_commands[] = { |
52 | 62 |
53 { ngx_string("limit_zone"), | 63 { ngx_string("limit_zone"), |
54 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE3, | 64 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE3, |
55 ngx_http_limit_zone, | 65 ngx_http_limit_zone, |
61 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2, | 71 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2, |
62 ngx_http_limit_conn, | 72 ngx_http_limit_conn, |
63 NGX_HTTP_LOC_CONF_OFFSET, | 73 NGX_HTTP_LOC_CONF_OFFSET, |
64 0, | 74 0, |
65 NULL }, | 75 NULL }, |
76 | |
77 { ngx_string("limit_conn_log_level"), | |
78 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
79 ngx_conf_set_enum_slot, | |
80 NGX_HTTP_LOC_CONF_OFFSET, | |
81 offsetof(ngx_http_limit_zone_conf_t, log_level), | |
82 &ngx_http_limit_conn_log_levels }, | |
66 | 83 |
67 ngx_null_command | 84 ngx_null_command |
68 }; | 85 }; |
69 | 86 |
70 | 87 |
187 goto done; | 204 goto done; |
188 } | 205 } |
189 | 206 |
190 ngx_shmtx_unlock(&shpool->mutex); | 207 ngx_shmtx_unlock(&shpool->mutex); |
191 | 208 |
192 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, | 209 ngx_log_error(lzcf->log_level, r->connection->log, 0, |
193 "limiting connections by zone \"%V\"", | 210 "limiting connections by zone \"%V\"", |
194 &lzcf->shm_zone->shm.name); | 211 &lzcf->shm_zone->shm.name); |
195 | 212 |
196 return NGX_HTTP_SERVICE_UNAVAILABLE; | 213 return NGX_HTTP_SERVICE_UNAVAILABLE; |
197 } | 214 } |
379 { | 396 { |
380 ngx_http_limit_zone_conf_t *conf; | 397 ngx_http_limit_zone_conf_t *conf; |
381 | 398 |
382 conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_limit_zone_conf_t)); | 399 conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_limit_zone_conf_t)); |
383 if (conf == NULL) { | 400 if (conf == NULL) { |
384 return NGX_CONF_ERROR; | 401 return NULL; |
385 } | 402 } |
386 | 403 |
387 /* | 404 /* |
388 * set by ngx_pcalloc(): | 405 * set by ngx_pcalloc(): |
389 * | 406 * |
390 * conf->shm_zone = NULL; | 407 * conf->shm_zone = NULL; |
391 * conf->conn = 0; | 408 * conf->conn = 0; |
392 */ | 409 */ |
393 | 410 |
411 conf->log_level = NGX_CONF_UNSET_UINT; | |
412 | |
394 return conf; | 413 return conf; |
395 } | 414 } |
396 | 415 |
397 | 416 |
398 static char * | 417 static char * |
402 ngx_http_limit_zone_conf_t *conf = child; | 421 ngx_http_limit_zone_conf_t *conf = child; |
403 | 422 |
404 if (conf->shm_zone == NULL) { | 423 if (conf->shm_zone == NULL) { |
405 *conf = *prev; | 424 *conf = *prev; |
406 } | 425 } |
426 | |
427 ngx_conf_merge_uint_value(conf->log_level, prev->log_level, NGX_LOG_ERR); | |
407 | 428 |
408 return NGX_CONF_OK; | 429 return NGX_CONF_OK; |
409 } | 430 } |
410 | 431 |
411 | 432 |