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
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) {