comparison src/http/modules/ngx_http_fastcgi_module.c @ 506:b9fdcaf2062b NGINX_0_7_65

nginx 0.7.65 *) Security: now nginx/Windows ignores trailing spaces in URI. Thanks to Dan Crowley, Core Security Technologies. *) Security: now nginx/Windows ignores short files names. Thanks to Dan Crowley, Core Security Technologies. *) Change: now the "009" status code is written to an access log for proxied HTTP/0.9 responses. *) Change: now the default buffer size of the "large_client_header_buffers" directive is 8K. Thanks to Andrew Cholakian. *) Change: now default SSL ciphers are "HIGH:!ADH:!MD5". *) Change: now SSLv2 protocol is disabled by default. *) Change: now $host variable value is always low case. *) Feature: the conf/fastcgi.conf for simple FastCGI configurations. *) Feature: now URI part is not required a "proxy_pass" directive if variables are used. *) Feature: the $ssl_session_id variable. *) Bugfix: if a proxied or FastCGI request was internally redirected to another proxied or FastCGI location, then $upstream_response_time variable may have abnormally large value; the bug had appeared in 0.7.63. *) Bugfix: if the "expires modified" set date in the past, then a negative number was set in the "Cache-Control" response header line. Thanks to Alex Kapranoff. *) Bugfix: nginx closed a connection if a cached response had an empty body. Thanks to Piotr Sikora. *) Bugfix: nginx cached a 304 response if there was the "If-None-Match" header line in a proxied request. Thanks to Tim Dettrick and David Kostal. *) Bugfix: nginx did not treat a comma as separator in the "Cache-Control" backend response header line. *) Bugfix: cached HTTP/0.9 responses were handled incorrectly. *) Bugfix: nginx sent gzipped responses to clients those do not support gzip, if "gzip_static on" and "gzip_vary off"; the bug had appeared in 0.8.16. *) Bugfix: nginx always added "Content-Encoding: gzip" response header line in 304 responses sent by ngx_http_gzip_static_module. *) Bugfix: the "!-x" operator did not work. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process, if limit_rate was used in HTTPS server. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process while $limit_rate logging. Thanks to Maxim Dounin. *) Bugfix: nginx did not support dates in 2038 year on 32-bit platforms; *) Bugfix: nginx/Windows tried to delete a temporary file twice if the file should replace an already existent file. *) Bugfix: nginx/Windows tried to rename a temporary file twice if the file should replace an already existent file. *) Bugfix: nginx/Windows might not create temporary file, a cache file, or "proxy/fastcgi_store"d file if a worker had no enough access rights for top level directories. *) Bugfix: in UTF-8 encoding support by "try_files" directive in nginx/Windows. *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module. Thanks to Maxim Dounin. *) Bugfix: the ngx_http_autoindex_module did not show the trailing slash in links to a directory; the bug had appeared in 0.7.15. *) Bugfix: nginx did not close a log file set by the --error-log-path configuration option; the bug had appeared in 0.7.53. *) Bugfix: "addition_types" directive was incorrectly named "addtion_types". *) Bugfix: invalid request line in $request variable was written in access_log only if error_log was set to "info" or "debug" level.
author Igor Sysoev <http://sysoev.ru>
date Mon, 01 Feb 2010 00:00:00 +0000
parents 89dc5654117c
children 68c0ae0a4959
comparison
equal deleted inserted replaced
505:c62da3dcc544 506:b9fdcaf2062b
519 ngx_string("X-Accel-Limit-Rate"), 519 ngx_string("X-Accel-Limit-Rate"),
520 ngx_string("X-Accel-Buffering"), 520 ngx_string("X-Accel-Buffering"),
521 ngx_string("X-Accel-Charset"), 521 ngx_string("X-Accel-Charset"),
522 ngx_null_string 522 ngx_null_string
523 }; 523 };
524
525
526 #if (NGX_HTTP_CACHE)
527
528 static ngx_str_t ngx_http_fastcgi_hide_cache_headers[] = {
529 ngx_string("Status"),
530 ngx_string("X-Accel-Expires"),
531 ngx_string("X-Accel-Redirect"),
532 ngx_string("X-Accel-Limit-Rate"),
533 ngx_string("X-Accel-Buffering"),
534 ngx_string("X-Accel-Charset"),
535 ngx_string("Set-Cookie"),
536 ngx_string("P3P"),
537 ngx_null_string
538 };
539
540 #endif
524 541
525 542
526 static ngx_path_init_t ngx_http_fastcgi_temp_path = { 543 static ngx_path_init_t ngx_http_fastcgi_temp_path = {
527 ngx_string(NGX_HTTP_FASTCGI_TEMP_PATH), { 1, 2, 0 } 544 ngx_string(NGX_HTTP_FASTCGI_TEMP_PATH), { 1, 2, 0 }
528 }; 545 };
1897 ngx_http_fastcgi_loc_conf_t *conf = child; 1914 ngx_http_fastcgi_loc_conf_t *conf = child;
1898 1915
1899 u_char *p; 1916 u_char *p;
1900 size_t size; 1917 size_t size;
1901 uintptr_t *code; 1918 uintptr_t *code;
1919 ngx_str_t *h;
1902 ngx_uint_t i; 1920 ngx_uint_t i;
1903 ngx_keyval_t *src; 1921 ngx_keyval_t *src;
1904 ngx_hash_init_t hash; 1922 ngx_hash_init_t hash;
1905 ngx_http_script_compile_t sc; 1923 ngx_http_script_compile_t sc;
1906 ngx_http_script_copy_code_t *copy; 1924 ngx_http_script_copy_code_t *copy;
2117 2135
2118 hash.max_size = 512; 2136 hash.max_size = 512;
2119 hash.bucket_size = ngx_align(64, ngx_cacheline_size); 2137 hash.bucket_size = ngx_align(64, ngx_cacheline_size);
2120 hash.name = "fastcgi_hide_headers_hash"; 2138 hash.name = "fastcgi_hide_headers_hash";
2121 2139
2140 #if (NGX_HTTP_CACHE)
2141
2142 h = conf->upstream.cache ? ngx_http_fastcgi_hide_cache_headers:
2143 ngx_http_fastcgi_hide_headers;
2144 #else
2145
2146 h = ngx_http_fastcgi_hide_headers;
2147
2148 #endif
2149
2122 if (ngx_http_upstream_hide_headers_hash(cf, &conf->upstream, 2150 if (ngx_http_upstream_hide_headers_hash(cf, &conf->upstream,
2123 &prev->upstream, 2151 &prev->upstream, h, &hash)
2124 ngx_http_fastcgi_hide_headers,
2125 &hash)
2126 != NGX_OK) 2152 != NGX_OK)
2127 { 2153 {
2128 return NGX_CONF_ERROR; 2154 return NGX_CONF_ERROR;
2129 } 2155 }
2130 2156
2431 if (flcf->upstream.upstream || flcf->fastcgi_lengths) { 2457 if (flcf->upstream.upstream || flcf->fastcgi_lengths) {
2432 return "is duplicate"; 2458 return "is duplicate";
2433 } 2459 }
2434 2460
2435 clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); 2461 clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
2462
2436 clcf->handler = ngx_http_fastcgi_handler; 2463 clcf->handler = ngx_http_fastcgi_handler;
2464
2465 if (clcf->name.data[clcf->name.len - 1] == '/') {
2466 clcf->auto_redirect = 1;
2467 }
2437 2468
2438 value = cf->args->elts; 2469 value = cf->args->elts;
2439 2470
2440 url = &value[1]; 2471 url = &value[1];
2441 2472
2466 u.no_resolve = 1; 2497 u.no_resolve = 1;
2467 2498
2468 flcf->upstream.upstream = ngx_http_upstream_add(cf, &u, 0); 2499 flcf->upstream.upstream = ngx_http_upstream_add(cf, &u, 0);
2469 if (flcf->upstream.upstream == NULL) { 2500 if (flcf->upstream.upstream == NULL) {
2470 return NGX_CONF_ERROR; 2501 return NGX_CONF_ERROR;
2471 }
2472
2473 if (clcf->name.data[clcf->name.len - 1] == '/') {
2474 clcf->auto_redirect = 1;
2475 } 2502 }
2476 2503
2477 return NGX_CONF_OK; 2504 return NGX_CONF_OK;
2478 } 2505 }
2479 2506