comparison src/http/ngx_http_core_module.c @ 412:b246022ef454 NGINX_0_7_18

nginx 0.7.18 *) Change: the "underscores_in_headers" directive; now nginx does not allows underscores in a client request header line names. *) Feature: the ngx_http_secure_link_module. *) Feature: the "real_ip_header" directive supports any header. *) Feature: the "log_subrequest" directive. *) Feature: the $realpath_root variable. *) Feature: the "http_502" and "http_504" parameters of the "proxy_next_upstream" directive. *) Bugfix: the "http_503" parameter of the "proxy_next_upstream" or "fastcgi_next_upstream" directives did not work. *) Bugfix: nginx might send a "Transfer-Encoding: chunked" heaer line for HEAD requests. *) Bugfix: now accept threshold depends on worker_connections.
author Igor Sysoev <http://sysoev.ru>
date Mon, 13 Oct 2008 00:00:00 +0400
parents 79c5df00501e
children b4f69f2ef02c
comparison
equal deleted inserted replaced
411:b453a4324c60 412:b246022ef454
229 ngx_conf_set_flag_slot, 229 ngx_conf_set_flag_slot,
230 NGX_HTTP_SRV_CONF_OFFSET, 230 NGX_HTTP_SRV_CONF_OFFSET,
231 offsetof(ngx_http_core_srv_conf_t, merge_slashes), 231 offsetof(ngx_http_core_srv_conf_t, merge_slashes),
232 NULL }, 232 NULL },
233 233
234 { ngx_string("underscores_in_headers"),
235 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
236 ngx_conf_set_flag_slot,
237 NGX_HTTP_SRV_CONF_OFFSET,
238 offsetof(ngx_http_core_srv_conf_t, underscores_in_headers),
239 NULL },
240
234 { ngx_string("location"), 241 { ngx_string("location"),
235 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE12, 242 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE12,
236 ngx_http_core_location, 243 ngx_http_core_location,
237 NGX_HTTP_SRV_CONF_OFFSET, 244 NGX_HTTP_SRV_CONF_OFFSET,
238 0, 245 0,
483 { ngx_string("log_not_found"), 490 { ngx_string("log_not_found"),
484 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, 491 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
485 ngx_conf_set_flag_slot, 492 ngx_conf_set_flag_slot,
486 NGX_HTTP_LOC_CONF_OFFSET, 493 NGX_HTTP_LOC_CONF_OFFSET,
487 offsetof(ngx_http_core_loc_conf_t, log_not_found), 494 offsetof(ngx_http_core_loc_conf_t, log_not_found),
495 NULL },
496
497 { ngx_string("log_subrequest"),
498 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
499 ngx_conf_set_flag_slot,
500 NGX_HTTP_LOC_CONF_OFFSET,
501 offsetof(ngx_http_core_loc_conf_t, log_subrequest),
488 NULL }, 502 NULL },
489 503
490 { ngx_string("recursive_error_pages"), 504 { ngx_string("recursive_error_pages"),
491 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, 505 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
492 ngx_conf_set_flag_slot, 506 ngx_conf_set_flag_slot,
2525 cscf->request_pool_size = NGX_CONF_UNSET_SIZE; 2539 cscf->request_pool_size = NGX_CONF_UNSET_SIZE;
2526 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC; 2540 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC;
2527 cscf->client_header_buffer_size = NGX_CONF_UNSET_SIZE; 2541 cscf->client_header_buffer_size = NGX_CONF_UNSET_SIZE;
2528 cscf->ignore_invalid_headers = NGX_CONF_UNSET; 2542 cscf->ignore_invalid_headers = NGX_CONF_UNSET;
2529 cscf->merge_slashes = NGX_CONF_UNSET; 2543 cscf->merge_slashes = NGX_CONF_UNSET;
2544 cscf->underscores_in_headers = NGX_CONF_UNSET;
2530 2545
2531 return cscf; 2546 return cscf;
2532 } 2547 }
2533 2548
2534 2549
2602 2617
2603 ngx_conf_merge_value(conf->ignore_invalid_headers, 2618 ngx_conf_merge_value(conf->ignore_invalid_headers,
2604 prev->ignore_invalid_headers, 1); 2619 prev->ignore_invalid_headers, 1);
2605 2620
2606 ngx_conf_merge_value(conf->merge_slashes, prev->merge_slashes, 1); 2621 ngx_conf_merge_value(conf->merge_slashes, prev->merge_slashes, 1);
2622
2623 ngx_conf_merge_value(conf->underscores_in_headers,
2624 prev->underscores_in_headers, 0);
2607 2625
2608 return NGX_CONF_OK; 2626 return NGX_CONF_OK;
2609 } 2627 }
2610 2628
2611 2629
2661 lcf->server_name_in_redirect = NGX_CONF_UNSET; 2679 lcf->server_name_in_redirect = NGX_CONF_UNSET;
2662 lcf->port_in_redirect = NGX_CONF_UNSET; 2680 lcf->port_in_redirect = NGX_CONF_UNSET;
2663 lcf->msie_padding = NGX_CONF_UNSET; 2681 lcf->msie_padding = NGX_CONF_UNSET;
2664 lcf->msie_refresh = NGX_CONF_UNSET; 2682 lcf->msie_refresh = NGX_CONF_UNSET;
2665 lcf->log_not_found = NGX_CONF_UNSET; 2683 lcf->log_not_found = NGX_CONF_UNSET;
2684 lcf->log_subrequest = NGX_CONF_UNSET;
2666 lcf->recursive_error_pages = NGX_CONF_UNSET; 2685 lcf->recursive_error_pages = NGX_CONF_UNSET;
2667 lcf->server_tokens = NGX_CONF_UNSET; 2686 lcf->server_tokens = NGX_CONF_UNSET;
2668 lcf->types_hash_max_size = NGX_CONF_UNSET_UINT; 2687 lcf->types_hash_max_size = NGX_CONF_UNSET_UINT;
2669 lcf->types_hash_bucket_size = NGX_CONF_UNSET_UINT; 2688 lcf->types_hash_bucket_size = NGX_CONF_UNSET_UINT;
2670 2689
2885 prev->server_name_in_redirect, 1); 2904 prev->server_name_in_redirect, 1);
2886 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1); 2905 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1);
2887 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1); 2906 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1);
2888 ngx_conf_merge_value(conf->msie_refresh, prev->msie_refresh, 0); 2907 ngx_conf_merge_value(conf->msie_refresh, prev->msie_refresh, 0);
2889 ngx_conf_merge_value(conf->log_not_found, prev->log_not_found, 1); 2908 ngx_conf_merge_value(conf->log_not_found, prev->log_not_found, 1);
2909 ngx_conf_merge_value(conf->log_subrequest, prev->log_subrequest, 0);
2890 ngx_conf_merge_value(conf->recursive_error_pages, 2910 ngx_conf_merge_value(conf->recursive_error_pages,
2891 prev->recursive_error_pages, 0); 2911 prev->recursive_error_pages, 0);
2892 ngx_conf_merge_value(conf->server_tokens, prev->server_tokens, 1); 2912 ngx_conf_merge_value(conf->server_tokens, prev->server_tokens, 1);
2893 2913
2894 ngx_conf_merge_ptr_value(conf->open_file_cache, 2914 ngx_conf_merge_ptr_value(conf->open_file_cache,
3263 if (ngx_strstr(value[1].data, "$document_root") 3283 if (ngx_strstr(value[1].data, "$document_root")
3264 || ngx_strstr(value[1].data, "${document_root}")) 3284 || ngx_strstr(value[1].data, "${document_root}"))
3265 { 3285 {
3266 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 3286 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3267 "the $document_root variable may not be used " 3287 "the $document_root variable may not be used "
3288 "in the \"%V\" directive",
3289 &cmd->name);
3290
3291 return NGX_CONF_ERROR;
3292 }
3293
3294 if (ngx_strstr(value[1].data, "$realpath_root")
3295 || ngx_strstr(value[1].data, "${realpath_root}"))
3296 {
3297 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3298 "the $realpath_root variable may not be used "
3268 "in the \"%V\" directive", 3299 "in the \"%V\" directive",
3269 &cmd->name); 3300 &cmd->name);
3270 3301
3271 return NGX_CONF_ERROR; 3302 return NGX_CONF_ERROR;
3272 } 3303 }