comparison src/http/ngx_http_core_module.h @ 384:09b703ae3ba5 NGINX_0_6_36

nginx 0.6.36 *) Change: now the "Invalid argument" error returned by setsockopt(TCP_NODELAY) on Solaris, is ignored. *) Change: now POSTs without "Content-Length" header line are allowed. *) Feature: the "try_files" directive. *) Feature: the --with-pcre option in the configure. *) Feature: the "if_modified_since" directive. *) Feature: the "$cookie_..." variables. *) Feature: the "$arg_..." variables. *) Bugfix: compatibility with Tru64 UNIX. Thanks to Dustin Marquess. *) Bugfix: a "ssl_engine" directive did not use a SSL-accelerator for asymmetric ciphers. Thanks to Marcin Gozdalik. *) Bugfix: in a redirect rewrite directive original arguments were concatenated with new arguments by a "?" rather than an "&"; the bug had appeared in 0.1.18. Thanks to Maxim Dounin. *) Bugfix: nginx could not be built on AIX. *) Bugfix: a double response might be returned if the epoll or rtsig methods are used and a redirect was returned to a request with body. Thanks to Eden Li. *) Bugfix: a segmentation fault might occur in worker process if "resolver" directive was used in SMTP proxy. *) Bugfix: fastcgi_store stored files not always. *) Bugfix: nginx did not process a FastCGI server response, if the server send too many messages to stderr before response.
author Igor Sysoev <http://sysoev.ru>
date Thu, 02 Apr 2009 00:00:00 +0400
parents d13234035cad
children 8815ae9c367b
comparison
equal deleted inserted replaced
383:3d40b0260a84 384:09b703ae3ba5
26 26
27 #define NGX_HTTP_SATISFY_ALL 0 27 #define NGX_HTTP_SATISFY_ALL 0
28 #define NGX_HTTP_SATISFY_ANY 1 28 #define NGX_HTTP_SATISFY_ANY 1
29 29
30 30
31 #define NGX_HTTP_IMS_OFF 0
32 #define NGX_HTTP_IMS_EXACT 1
33 #define NGX_HTTP_IMS_BEFORE 2
34
35
31 typedef struct { 36 typedef struct {
32 unsigned default_server:1; 37 unsigned default_server:1;
33 unsigned bind:1; 38 unsigned bind:1;
34 39
35 int backlog; 40 int backlog;
72 NGX_HTTP_PREACCESS_PHASE, 77 NGX_HTTP_PREACCESS_PHASE,
73 78
74 NGX_HTTP_ACCESS_PHASE, 79 NGX_HTTP_ACCESS_PHASE,
75 NGX_HTTP_POST_ACCESS_PHASE, 80 NGX_HTTP_POST_ACCESS_PHASE,
76 81
82 NGX_HTTP_TRY_FILES_PHASE,
77 NGX_HTTP_CONTENT_PHASE, 83 NGX_HTTP_CONTENT_PHASE,
78 84
79 NGX_HTTP_LOG_PHASE 85 NGX_HTTP_LOG_PHASE
80 } ngx_http_phases; 86 } ngx_http_phases;
81 87
119 125
120 ngx_uint_t variables_hash_max_size; 126 ngx_uint_t variables_hash_max_size;
121 ngx_uint_t variables_hash_bucket_size; 127 ngx_uint_t variables_hash_bucket_size;
122 128
123 ngx_hash_keys_arrays_t *variables_keys; 129 ngx_hash_keys_arrays_t *variables_keys;
130
131 ngx_uint_t try_files; /* unsigned try_files:1 */
124 132
125 ngx_http_phase_t phases[NGX_HTTP_LOG_PHASE + 1]; 133 ngx_http_phase_t phases[NGX_HTTP_LOG_PHASE + 1];
126 } ngx_http_core_main_conf_t; 134 } ngx_http_core_main_conf_t;
127 135
128 136
229 ngx_array_t *uri_lengths; 237 ngx_array_t *uri_lengths;
230 ngx_array_t *uri_values; 238 ngx_array_t *uri_values;
231 } ngx_http_err_page_t; 239 } ngx_http_err_page_t;
232 240
233 241
242 typedef struct {
243 ngx_array_t *lengths;
244 ngx_array_t *values;
245 ngx_str_t name;
246 ngx_uint_t test_dir; /* unsigned test_dir:1; */
247 } ngx_http_try_file_t;
248
249
234 typedef struct ngx_http_core_loc_conf_s ngx_http_core_loc_conf_t; 250 typedef struct ngx_http_core_loc_conf_s ngx_http_core_loc_conf_t;
235 251
236 struct ngx_http_core_loc_conf_s { 252 struct ngx_http_core_loc_conf_s {
237 ngx_str_t name; /* location name */ 253 ngx_str_t name; /* location name */
238 254
290 ngx_resolver_t *resolver; /* resolver */ 306 ngx_resolver_t *resolver; /* resolver */
291 307
292 time_t keepalive_header; /* keepalive_timeout */ 308 time_t keepalive_header; /* keepalive_timeout */
293 309
294 ngx_uint_t satisfy; /* satisfy */ 310 ngx_uint_t satisfy; /* satisfy */
311 ngx_uint_t if_modified_since; /* if_modified_since */
295 312
296 ngx_flag_t internal; /* internal */ 313 ngx_flag_t internal; /* internal */
297 ngx_flag_t client_body_in_file_only; /* client_body_in_file_only */ 314 ngx_flag_t client_body_in_file_only; /* client_body_in_file_only */
298 ngx_flag_t sendfile; /* sendfile */ 315 ngx_flag_t sendfile; /* sendfile */
299 ngx_flag_t tcp_nopush; /* tcp_nopush */ 316 ngx_flag_t tcp_nopush; /* tcp_nopush */
317 ngx_array_t *gzip_disable; /* gzip_disable */ 334 ngx_array_t *gzip_disable; /* gzip_disable */
318 #endif 335 #endif
319 #endif 336 #endif
320 337
321 ngx_array_t *error_pages; /* error_page */ 338 ngx_array_t *error_pages; /* error_page */
339 ngx_http_try_file_t *try_files; /* try_files */
322 340
323 ngx_path_t *client_body_temp_path; /* client_body_temp_path */ 341 ngx_path_t *client_body_temp_path; /* client_body_temp_path */
324 342
325 ngx_open_file_cache_t *open_file_cache; 343 ngx_open_file_cache_t *open_file_cache;
326 time_t open_file_cache_valid; 344 time_t open_file_cache_valid;
347 ngx_int_t ngx_http_core_post_rewrite_phase(ngx_http_request_t *r, 365 ngx_int_t ngx_http_core_post_rewrite_phase(ngx_http_request_t *r,
348 ngx_http_phase_handler_t *ph); 366 ngx_http_phase_handler_t *ph);
349 ngx_int_t ngx_http_core_access_phase(ngx_http_request_t *r, 367 ngx_int_t ngx_http_core_access_phase(ngx_http_request_t *r,
350 ngx_http_phase_handler_t *ph); 368 ngx_http_phase_handler_t *ph);
351 ngx_int_t ngx_http_core_post_access_phase(ngx_http_request_t *r, 369 ngx_int_t ngx_http_core_post_access_phase(ngx_http_request_t *r,
370 ngx_http_phase_handler_t *ph);
371 ngx_int_t ngx_http_core_try_files_phase(ngx_http_request_t *r,
352 ngx_http_phase_handler_t *ph); 372 ngx_http_phase_handler_t *ph);
353 ngx_int_t ngx_http_core_content_phase(ngx_http_request_t *r, 373 ngx_int_t ngx_http_core_content_phase(ngx_http_request_t *r,
354 ngx_http_phase_handler_t *ph); 374 ngx_http_phase_handler_t *ph);
355 375
356 ngx_int_t ngx_http_set_content_type(ngx_http_request_t *r); 376 ngx_int_t ngx_http_set_content_type(ngx_http_request_t *r);