Mercurial > hg > nginx-vendor-current
comparison src/http/modules/ngx_http_fastcgi_module.c @ 592:09d5f308901f NGINX_0_8_48
nginx 0.8.48
*) Change: now the "server_name" directive default value is an empty
name "".
Thanks to Gena Makhomed.
*) Change: now the "server_name_in_redirect" directive default value is
"off".
*) Feature: the $geoip_dma_code, $geoip_area_code, and
$geoip_region_name variables.
Thanks to Christine McGonagle.
*) Bugfix: the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and
"scgi_pass" directives were not inherited inside "limit_except"
blocks.
*) Bugfix: the "proxy_cache_min_uses", "fastcgi_cache_min_uses"
"uwsgi_cache_min_uses", and "scgi_cache_min_uses" directives did not
work; the bug had appeared in 0.8.46.
*) Bugfix: the "fastcgi_split_path_info" directive used incorrectly
captures, if only parts of an URI were captured.
Thanks to Yuriy Taraday and Frank Enderle.
*) Bugfix: the "rewrite" directive did not escape a ";" character
during copying from URI to query string.
Thanks to Daisuke Murase.
*) Bugfix: the ngx_http_image_filter_module closed a connection, if an
image was larger than "image_filter_buffer" size.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 03 Aug 2010 00:00:00 +0400 |
parents | b6a5942a4e6a |
children | ce857f6b74a7 |
comparison
equal
deleted
inserted
replaced
591:8b891ad58d6a | 592:09d5f308901f |
---|---|
308 NULL }, | 308 NULL }, |
309 | 309 |
310 #if (NGX_HTTP_CACHE) | 310 #if (NGX_HTTP_CACHE) |
311 | 311 |
312 { ngx_string("fastcgi_cache"), | 312 { ngx_string("fastcgi_cache"), |
313 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | 313 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, |
314 ngx_http_fastcgi_cache, | 314 ngx_http_fastcgi_cache, |
315 NGX_HTTP_LOC_CONF_OFFSET, | 315 NGX_HTTP_LOC_CONF_OFFSET, |
316 0, | 316 0, |
317 NULL }, | 317 NULL }, |
318 | 318 |
319 { ngx_string("fastcgi_cache_key"), | 319 { ngx_string("fastcgi_cache_key"), |
320 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | 320 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, |
321 ngx_http_fastcgi_cache_key, | 321 ngx_http_fastcgi_cache_key, |
322 NGX_HTTP_LOC_CONF_OFFSET, | 322 NGX_HTTP_LOC_CONF_OFFSET, |
323 0, | 323 0, |
324 NULL }, | 324 NULL }, |
325 | 325 |
408 NGX_HTTP_LOC_CONF_OFFSET, | 408 NGX_HTTP_LOC_CONF_OFFSET, |
409 offsetof(ngx_http_fastcgi_loc_conf_t, params_source), | 409 offsetof(ngx_http_fastcgi_loc_conf_t, params_source), |
410 NULL }, | 410 NULL }, |
411 | 411 |
412 { ngx_string("fastcgi_pass_header"), | 412 { ngx_string("fastcgi_pass_header"), |
413 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | 413 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, |
414 ngx_conf_set_str_array_slot, | 414 ngx_conf_set_str_array_slot, |
415 NGX_HTTP_LOC_CONF_OFFSET, | 415 NGX_HTTP_LOC_CONF_OFFSET, |
416 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.pass_headers), | 416 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.pass_headers), |
417 NULL }, | 417 NULL }, |
418 | 418 |
419 { ngx_string("fastcgi_hide_header"), | 419 { ngx_string("fastcgi_hide_header"), |
420 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | 420 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, |
421 ngx_conf_set_str_array_slot, | 421 ngx_conf_set_str_array_slot, |
422 NGX_HTTP_LOC_CONF_OFFSET, | 422 NGX_HTTP_LOC_CONF_OFFSET, |
423 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.hide_headers), | 423 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.hide_headers), |
424 NULL }, | 424 NULL }, |
425 | 425 |
2023 ngx_uint_t i; | 2023 ngx_uint_t i; |
2024 ngx_array_t headers_names; | 2024 ngx_array_t headers_names; |
2025 ngx_keyval_t *src; | 2025 ngx_keyval_t *src; |
2026 ngx_hash_key_t *hk; | 2026 ngx_hash_key_t *hk; |
2027 ngx_hash_init_t hash; | 2027 ngx_hash_init_t hash; |
2028 ngx_http_core_loc_conf_t *clcf; | |
2028 ngx_http_script_compile_t sc; | 2029 ngx_http_script_compile_t sc; |
2029 ngx_http_script_copy_code_t *copy; | 2030 ngx_http_script_copy_code_t *copy; |
2030 | 2031 |
2031 if (conf->upstream.store != 0) { | 2032 if (conf->upstream.store != 0) { |
2032 ngx_conf_merge_value(conf->upstream.store, | 2033 ngx_conf_merge_value(conf->upstream.store, |
2268 if (conf->fastcgi_lengths == NULL) { | 2269 if (conf->fastcgi_lengths == NULL) { |
2269 conf->fastcgi_lengths = prev->fastcgi_lengths; | 2270 conf->fastcgi_lengths = prev->fastcgi_lengths; |
2270 conf->fastcgi_values = prev->fastcgi_values; | 2271 conf->fastcgi_values = prev->fastcgi_values; |
2271 } | 2272 } |
2272 | 2273 |
2274 if (conf->upstream.upstream || conf->fastcgi_lengths) { | |
2275 clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); | |
2276 if (clcf->handler == NULL && clcf->lmt_excpt) { | |
2277 clcf->handler = ngx_http_fastcgi_handler; | |
2278 } | |
2279 } | |
2280 | |
2273 #if (NGX_PCRE) | 2281 #if (NGX_PCRE) |
2274 if (conf->split_regex == NULL) { | 2282 if (conf->split_regex == NULL) { |
2275 conf->split_regex = prev->split_regex; | 2283 conf->split_regex = prev->split_regex; |
2276 conf->split_name = prev->split_name; | 2284 conf->split_name = prev->split_name; |
2277 } | 2285 } |
2556 | 2564 |
2557 n = ngx_regex_exec(flcf->split_regex, &r->uri, captures, (1 + 2) * 3); | 2565 n = ngx_regex_exec(flcf->split_regex, &r->uri, captures, (1 + 2) * 3); |
2558 | 2566 |
2559 if (n >= 0) { /* match */ | 2567 if (n >= 0) { /* match */ |
2560 f->script_name.len = captures[3] - captures[2]; | 2568 f->script_name.len = captures[3] - captures[2]; |
2561 f->script_name.data = r->uri.data; | 2569 f->script_name.data = r->uri.data + captures[2]; |
2562 | 2570 |
2563 f->path_info.len = captures[5] - captures[4]; | 2571 f->path_info.len = captures[5] - captures[4]; |
2564 f->path_info.data = r->uri.data + f->script_name.len; | 2572 f->path_info.data = r->uri.data + captures[4]; |
2565 | 2573 |
2566 return f; | 2574 return f; |
2567 } | 2575 } |
2568 | 2576 |
2569 if (n == NGX_REGEX_NO_MATCHED) { | 2577 if (n == NGX_REGEX_NO_MATCHED) { |