Mercurial > hg > nginx-vendor-0-7
comparison src/http/ngx_http_core_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 | ed3d382670c7 |
children | 706fef7f4dcc |
comparison
equal
deleted
inserted
replaced
501:dc87c92181c7 | 502:89dc5654117c |
---|---|
431 ngx_conf_set_size_slot, | 431 ngx_conf_set_size_slot, |
432 NGX_HTTP_LOC_CONF_OFFSET, | 432 NGX_HTTP_LOC_CONF_OFFSET, |
433 offsetof(ngx_http_core_loc_conf_t, limit_rate), | 433 offsetof(ngx_http_core_loc_conf_t, limit_rate), |
434 NULL }, | 434 NULL }, |
435 | 435 |
436 { ngx_string("limit_rate_after"), | |
437 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF | |
438 |NGX_CONF_TAKE1, | |
439 ngx_conf_set_size_slot, | |
440 NGX_HTTP_LOC_CONF_OFFSET, | |
441 offsetof(ngx_http_core_loc_conf_t, limit_rate_after), | |
442 NULL }, | |
443 | |
436 { ngx_string("keepalive_timeout"), | 444 { ngx_string("keepalive_timeout"), |
437 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12, | 445 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12, |
438 ngx_http_core_keepalive, | 446 ngx_http_core_keepalive, |
439 NGX_HTTP_LOC_CONF_OFFSET, | 447 NGX_HTTP_LOC_CONF_OFFSET, |
440 0, | 448 0, |
875 { | 883 { |
876 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, | 884 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, |
877 "client intended to send too large body: %O bytes", | 885 "client intended to send too large body: %O bytes", |
878 r->headers_in.content_length_n); | 886 r->headers_in.content_length_n); |
879 | 887 |
888 (void) ngx_http_discard_request_body(r); | |
880 ngx_http_finalize_request(r, NGX_HTTP_REQUEST_ENTITY_TOO_LARGE); | 889 ngx_http_finalize_request(r, NGX_HTTP_REQUEST_ENTITY_TOO_LARGE); |
881 return NGX_OK; | 890 return NGX_OK; |
882 } | 891 } |
883 | 892 |
884 if (rc == NGX_DONE) { | 893 if (rc == NGX_DONE) { |
2689 { | 2698 { |
2690 ngx_http_core_main_conf_t *cmcf; | 2699 ngx_http_core_main_conf_t *cmcf; |
2691 | 2700 |
2692 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t)); | 2701 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t)); |
2693 if (cmcf == NULL) { | 2702 if (cmcf == NULL) { |
2694 return NGX_CONF_ERROR; | 2703 return NULL; |
2695 } | 2704 } |
2696 | 2705 |
2697 if (ngx_array_init(&cmcf->servers, cf->pool, 4, | 2706 if (ngx_array_init(&cmcf->servers, cf->pool, 4, |
2698 sizeof(ngx_http_core_srv_conf_t *)) | 2707 sizeof(ngx_http_core_srv_conf_t *)) |
2699 != NGX_OK) | 2708 != NGX_OK) |
2700 { | 2709 { |
2701 return NGX_CONF_ERROR; | 2710 return NULL; |
2702 } | 2711 } |
2703 | 2712 |
2704 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT; | 2713 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT; |
2705 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT; | 2714 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT; |
2706 | 2715 |
2748 { | 2757 { |
2749 ngx_http_core_srv_conf_t *cscf; | 2758 ngx_http_core_srv_conf_t *cscf; |
2750 | 2759 |
2751 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t)); | 2760 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t)); |
2752 if (cscf == NULL) { | 2761 if (cscf == NULL) { |
2753 return NGX_CONF_ERROR; | 2762 return NULL; |
2754 } | 2763 } |
2755 | 2764 |
2756 /* | 2765 /* |
2757 * set by ngx_pcalloc(): | 2766 * set by ngx_pcalloc(): |
2758 * | 2767 * |
2761 | 2770 |
2762 if (ngx_array_init(&cscf->listen, cf->temp_pool, 4, | 2771 if (ngx_array_init(&cscf->listen, cf->temp_pool, 4, |
2763 sizeof(ngx_http_listen_t)) | 2772 sizeof(ngx_http_listen_t)) |
2764 != NGX_OK) | 2773 != NGX_OK) |
2765 { | 2774 { |
2766 return NGX_CONF_ERROR; | 2775 return NULL; |
2767 } | 2776 } |
2768 | 2777 |
2769 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4, | 2778 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4, |
2770 sizeof(ngx_http_server_name_t)) | 2779 sizeof(ngx_http_server_name_t)) |
2771 != NGX_OK) | 2780 != NGX_OK) |
2772 { | 2781 { |
2773 return NGX_CONF_ERROR; | 2782 return NULL; |
2774 } | 2783 } |
2775 | 2784 |
2776 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE; | 2785 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE; |
2777 cscf->request_pool_size = NGX_CONF_UNSET_SIZE; | 2786 cscf->request_pool_size = NGX_CONF_UNSET_SIZE; |
2778 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC; | 2787 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC; |
2879 { | 2888 { |
2880 ngx_http_core_loc_conf_t *lcf; | 2889 ngx_http_core_loc_conf_t *lcf; |
2881 | 2890 |
2882 lcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t)); | 2891 lcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t)); |
2883 if (lcf == NULL) { | 2892 if (lcf == NULL) { |
2884 return NGX_CONF_ERROR; | 2893 return NULL; |
2885 } | 2894 } |
2886 | 2895 |
2887 /* | 2896 /* |
2888 * set by ngx_pcalloc(): | 2897 * set by ngx_pcalloc(): |
2889 * | 2898 * |
2918 lcf->tcp_nodelay = NGX_CONF_UNSET; | 2927 lcf->tcp_nodelay = NGX_CONF_UNSET; |
2919 lcf->send_timeout = NGX_CONF_UNSET_MSEC; | 2928 lcf->send_timeout = NGX_CONF_UNSET_MSEC; |
2920 lcf->send_lowat = NGX_CONF_UNSET_SIZE; | 2929 lcf->send_lowat = NGX_CONF_UNSET_SIZE; |
2921 lcf->postpone_output = NGX_CONF_UNSET_SIZE; | 2930 lcf->postpone_output = NGX_CONF_UNSET_SIZE; |
2922 lcf->limit_rate = NGX_CONF_UNSET_SIZE; | 2931 lcf->limit_rate = NGX_CONF_UNSET_SIZE; |
2932 lcf->limit_rate_after = NGX_CONF_UNSET_SIZE; | |
2923 lcf->keepalive_timeout = NGX_CONF_UNSET_MSEC; | 2933 lcf->keepalive_timeout = NGX_CONF_UNSET_MSEC; |
2924 lcf->keepalive_header = NGX_CONF_UNSET; | 2934 lcf->keepalive_header = NGX_CONF_UNSET; |
2925 lcf->keepalive_requests = NGX_CONF_UNSET_UINT; | 2935 lcf->keepalive_requests = NGX_CONF_UNSET_UINT; |
2926 lcf->lingering_time = NGX_CONF_UNSET_MSEC; | 2936 lcf->lingering_time = NGX_CONF_UNSET_MSEC; |
2927 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC; | 2937 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC; |
3117 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000); | 3127 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000); |
3118 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0); | 3128 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0); |
3119 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output, | 3129 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output, |
3120 1460); | 3130 1460); |
3121 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0); | 3131 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0); |
3132 ngx_conf_merge_size_value(conf->limit_rate_after, prev->limit_rate_after, | |
3133 0); | |
3122 ngx_conf_merge_msec_value(conf->keepalive_timeout, | 3134 ngx_conf_merge_msec_value(conf->keepalive_timeout, |
3123 prev->keepalive_timeout, 75000); | 3135 prev->keepalive_timeout, 75000); |
3124 ngx_conf_merge_sec_value(conf->keepalive_header, | 3136 ngx_conf_merge_sec_value(conf->keepalive_header, |
3125 prev->keepalive_header, 0); | 3137 prev->keepalive_header, 0); |
3126 ngx_conf_merge_uint_value(conf->keepalive_requests, | 3138 ngx_conf_merge_uint_value(conf->keepalive_requests, |