comparison src/http/ngx_http_core_module.h @ 439:dac47e9ef0d5 NGINX_0_7_27

nginx 0.7.27 *) Feature: the "try_files" directive. *) Feature: variables support in the "fastcgi_pass" directive. *) Feature: now the $geo variable may get an address from a variable. Thanks to Andrei Nigmatulin. *) Feature: now a location's modifier may be used without space before name. *) Feature: the $upstream_response_length variable. *) Bugfix: now a "add_header" directive does not add an empty value. *) Bugfix: if zero length static file was requested, then nginx just closed connection; the bug had appeared in 0.7.25. *) Bugfix: a MOVE method could not move file in non-existent directory. *) Bugfix: a segmentation fault occurred in worker process, if no one named location was defined in server, but some one was used in an error_page directive. Thanks to Sergey Bochenkov.
author Igor Sysoev <http://sysoev.ru>
date Mon, 15 Dec 2008 00:00:00 +0300
parents 9da1d9d94d18
children 6281966854a5
comparison
equal deleted inserted replaced
438:3b8e9d1bc9bb 439:dac47e9ef0d5
79 NGX_HTTP_PREACCESS_PHASE, 79 NGX_HTTP_PREACCESS_PHASE,
80 80
81 NGX_HTTP_ACCESS_PHASE, 81 NGX_HTTP_ACCESS_PHASE,
82 NGX_HTTP_POST_ACCESS_PHASE, 82 NGX_HTTP_POST_ACCESS_PHASE,
83 83
84 NGX_HTTP_TRY_FILES_PHASE,
84 NGX_HTTP_CONTENT_PHASE, 85 NGX_HTTP_CONTENT_PHASE,
85 86
86 NGX_HTTP_LOG_PHASE 87 NGX_HTTP_LOG_PHASE
87 } ngx_http_phases; 88 } ngx_http_phases;
88 89
126 127
127 ngx_uint_t variables_hash_max_size; 128 ngx_uint_t variables_hash_max_size;
128 ngx_uint_t variables_hash_bucket_size; 129 ngx_uint_t variables_hash_bucket_size;
129 130
130 ngx_hash_keys_arrays_t *variables_keys; 131 ngx_hash_keys_arrays_t *variables_keys;
132
133 ngx_uint_t try_files; /* unsigned try_files:1 */
131 134
132 ngx_http_phase_t phases[NGX_HTTP_LOG_PHASE + 1]; 135 ngx_http_phase_t phases[NGX_HTTP_LOG_PHASE + 1];
133 } ngx_http_core_main_conf_t; 136 } ngx_http_core_main_conf_t;
134 137
135 138
234 ngx_str_t uri; 237 ngx_str_t uri;
235 ngx_str_t args; 238 ngx_str_t args;
236 ngx_array_t *uri_lengths; 239 ngx_array_t *uri_lengths;
237 ngx_array_t *uri_values; 240 ngx_array_t *uri_values;
238 } ngx_http_err_page_t; 241 } ngx_http_err_page_t;
242
243
244 typedef struct {
245 ngx_array_t *lengths;
246 ngx_array_t *values;
247 ngx_str_t name;
248 } ngx_http_try_file_t;
239 249
240 250
241 struct ngx_http_core_loc_conf_s { 251 struct ngx_http_core_loc_conf_s {
242 ngx_str_t name; /* location name */ 252 ngx_str_t name; /* location name */
243 253
326 ngx_array_t *gzip_disable; /* gzip_disable */ 336 ngx_array_t *gzip_disable; /* gzip_disable */
327 #endif 337 #endif
328 #endif 338 #endif
329 339
330 ngx_array_t *error_pages; /* error_page */ 340 ngx_array_t *error_pages; /* error_page */
341 ngx_http_try_file_t *try_files; /* try_files */
331 342
332 ngx_path_t *client_body_temp_path; /* client_body_temp_path */ 343 ngx_path_t *client_body_temp_path; /* client_body_temp_path */
333 344
334 ngx_open_file_cache_t *open_file_cache; 345 ngx_open_file_cache_t *open_file_cache;
335 time_t open_file_cache_valid; 346 time_t open_file_cache_valid;
383 ngx_int_t ngx_http_core_post_rewrite_phase(ngx_http_request_t *r, 394 ngx_int_t ngx_http_core_post_rewrite_phase(ngx_http_request_t *r,
384 ngx_http_phase_handler_t *ph); 395 ngx_http_phase_handler_t *ph);
385 ngx_int_t ngx_http_core_access_phase(ngx_http_request_t *r, 396 ngx_int_t ngx_http_core_access_phase(ngx_http_request_t *r,
386 ngx_http_phase_handler_t *ph); 397 ngx_http_phase_handler_t *ph);
387 ngx_int_t ngx_http_core_post_access_phase(ngx_http_request_t *r, 398 ngx_int_t ngx_http_core_post_access_phase(ngx_http_request_t *r,
399 ngx_http_phase_handler_t *ph);
400 ngx_int_t ngx_http_core_try_files_phase(ngx_http_request_t *r,
388 ngx_http_phase_handler_t *ph); 401 ngx_http_phase_handler_t *ph);
389 ngx_int_t ngx_http_core_content_phase(ngx_http_request_t *r, 402 ngx_int_t ngx_http_core_content_phase(ngx_http_request_t *r,
390 ngx_http_phase_handler_t *ph); 403 ngx_http_phase_handler_t *ph);
391 404
392 405