Mercurial > hg > nginx-quic
comparison src/http/modules/ngx_http_fastcgi_module.c @ 5832:d09b689911ac
Upstream: limited next_upstream time and tries (ticket #544).
The new directives {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_tries
and {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_timeout limit
the number of upstreams tried and the maximum time spent for these tries
when searching for a valid upstream.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Fri, 12 Sep 2014 18:50:47 +0400 |
parents | 906530c9ffd2 |
children | 52b4984d2b3c |
comparison
equal
deleted
inserted
replaced
5831:575175ebf4b4 | 5832:d09b689911ac |
---|---|
440 ngx_conf_set_bitmask_slot, | 440 ngx_conf_set_bitmask_slot, |
441 NGX_HTTP_LOC_CONF_OFFSET, | 441 NGX_HTTP_LOC_CONF_OFFSET, |
442 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream), | 442 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream), |
443 &ngx_http_fastcgi_next_upstream_masks }, | 443 &ngx_http_fastcgi_next_upstream_masks }, |
444 | 444 |
445 { ngx_string("fastcgi_next_upstream_tries"), | |
446 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
447 ngx_conf_set_num_slot, | |
448 NGX_HTTP_LOC_CONF_OFFSET, | |
449 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream_tries), | |
450 NULL }, | |
451 | |
452 { ngx_string("fastcgi_next_upstream_timeout"), | |
453 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
454 ngx_conf_set_msec_slot, | |
455 NGX_HTTP_LOC_CONF_OFFSET, | |
456 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream_timeout), | |
457 NULL }, | |
458 | |
445 { ngx_string("fastcgi_param"), | 459 { ngx_string("fastcgi_param"), |
446 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, | 460 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, |
447 ngx_http_upstream_param_set_slot, | 461 ngx_http_upstream_param_set_slot, |
448 NGX_HTTP_LOC_CONF_OFFSET, | 462 NGX_HTTP_LOC_CONF_OFFSET, |
449 offsetof(ngx_http_fastcgi_loc_conf_t, params_source), | 463 offsetof(ngx_http_fastcgi_loc_conf_t, params_source), |
2312 * conf->index.len = { 0, NULL }; | 2326 * conf->index.len = { 0, NULL }; |
2313 */ | 2327 */ |
2314 | 2328 |
2315 conf->upstream.store = NGX_CONF_UNSET; | 2329 conf->upstream.store = NGX_CONF_UNSET; |
2316 conf->upstream.store_access = NGX_CONF_UNSET_UINT; | 2330 conf->upstream.store_access = NGX_CONF_UNSET_UINT; |
2331 conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT; | |
2317 conf->upstream.buffering = NGX_CONF_UNSET; | 2332 conf->upstream.buffering = NGX_CONF_UNSET; |
2318 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; | 2333 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; |
2319 | 2334 |
2320 conf->upstream.local = NGX_CONF_UNSET_PTR; | 2335 conf->upstream.local = NGX_CONF_UNSET_PTR; |
2321 | 2336 |
2322 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; | 2337 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; |
2323 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; | 2338 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; |
2324 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; | 2339 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; |
2340 conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC; | |
2325 | 2341 |
2326 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; | 2342 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; |
2327 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; | 2343 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; |
2328 | 2344 |
2329 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; | 2345 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; |
2385 } | 2401 } |
2386 | 2402 |
2387 ngx_conf_merge_uint_value(conf->upstream.store_access, | 2403 ngx_conf_merge_uint_value(conf->upstream.store_access, |
2388 prev->upstream.store_access, 0600); | 2404 prev->upstream.store_access, 0600); |
2389 | 2405 |
2406 ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries, | |
2407 prev->upstream.next_upstream_tries, 0); | |
2408 | |
2390 ngx_conf_merge_value(conf->upstream.buffering, | 2409 ngx_conf_merge_value(conf->upstream.buffering, |
2391 prev->upstream.buffering, 1); | 2410 prev->upstream.buffering, 1); |
2392 | 2411 |
2393 ngx_conf_merge_value(conf->upstream.ignore_client_abort, | 2412 ngx_conf_merge_value(conf->upstream.ignore_client_abort, |
2394 prev->upstream.ignore_client_abort, 0); | 2413 prev->upstream.ignore_client_abort, 0); |
2402 ngx_conf_merge_msec_value(conf->upstream.send_timeout, | 2421 ngx_conf_merge_msec_value(conf->upstream.send_timeout, |
2403 prev->upstream.send_timeout, 60000); | 2422 prev->upstream.send_timeout, 60000); |
2404 | 2423 |
2405 ngx_conf_merge_msec_value(conf->upstream.read_timeout, | 2424 ngx_conf_merge_msec_value(conf->upstream.read_timeout, |
2406 prev->upstream.read_timeout, 60000); | 2425 prev->upstream.read_timeout, 60000); |
2426 | |
2427 ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout, | |
2428 prev->upstream.next_upstream_timeout, 0); | |
2407 | 2429 |
2408 ngx_conf_merge_size_value(conf->upstream.send_lowat, | 2430 ngx_conf_merge_size_value(conf->upstream.send_lowat, |
2409 prev->upstream.send_lowat, 0); | 2431 prev->upstream.send_lowat, 0); |
2410 | 2432 |
2411 ngx_conf_merge_size_value(conf->upstream.buffer_size, | 2433 ngx_conf_merge_size_value(conf->upstream.buffer_size, |