Mercurial > hg > nginx
comparison src/http/modules/ngx_http_scgi_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 | 2aff40b3dea2 |
comparison
equal
deleted
inserted
replaced
5831:575175ebf4b4 | 5832:d09b689911ac |
---|---|
296 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, | 296 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, |
297 ngx_conf_set_bitmask_slot, | 297 ngx_conf_set_bitmask_slot, |
298 NGX_HTTP_LOC_CONF_OFFSET, | 298 NGX_HTTP_LOC_CONF_OFFSET, |
299 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream), | 299 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream), |
300 &ngx_http_scgi_next_upstream_masks }, | 300 &ngx_http_scgi_next_upstream_masks }, |
301 | |
302 { ngx_string("scgi_next_upstream_tries"), | |
303 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
304 ngx_conf_set_num_slot, | |
305 NGX_HTTP_LOC_CONF_OFFSET, | |
306 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream_tries), | |
307 NULL }, | |
308 | |
309 { ngx_string("scgi_next_upstream_timeout"), | |
310 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
311 ngx_conf_set_msec_slot, | |
312 NGX_HTTP_LOC_CONF_OFFSET, | |
313 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream_timeout), | |
314 NULL }, | |
301 | 315 |
302 { ngx_string("scgi_param"), | 316 { ngx_string("scgi_param"), |
303 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, | 317 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, |
304 ngx_http_upstream_param_set_slot, | 318 ngx_http_upstream_param_set_slot, |
305 NGX_HTTP_LOC_CONF_OFFSET, | 319 NGX_HTTP_LOC_CONF_OFFSET, |
1072 return NULL; | 1086 return NULL; |
1073 } | 1087 } |
1074 | 1088 |
1075 conf->upstream.store = NGX_CONF_UNSET; | 1089 conf->upstream.store = NGX_CONF_UNSET; |
1076 conf->upstream.store_access = NGX_CONF_UNSET_UINT; | 1090 conf->upstream.store_access = NGX_CONF_UNSET_UINT; |
1091 conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT; | |
1077 conf->upstream.buffering = NGX_CONF_UNSET; | 1092 conf->upstream.buffering = NGX_CONF_UNSET; |
1078 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; | 1093 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; |
1079 | 1094 |
1080 conf->upstream.local = NGX_CONF_UNSET_PTR; | 1095 conf->upstream.local = NGX_CONF_UNSET_PTR; |
1081 | 1096 |
1082 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; | 1097 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; |
1083 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; | 1098 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; |
1084 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; | 1099 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; |
1100 conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC; | |
1085 | 1101 |
1086 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; | 1102 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; |
1087 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; | 1103 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; |
1088 | 1104 |
1089 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; | 1105 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; |
1140 } | 1156 } |
1141 | 1157 |
1142 ngx_conf_merge_uint_value(conf->upstream.store_access, | 1158 ngx_conf_merge_uint_value(conf->upstream.store_access, |
1143 prev->upstream.store_access, 0600); | 1159 prev->upstream.store_access, 0600); |
1144 | 1160 |
1161 ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries, | |
1162 prev->upstream.next_upstream_tries, 0); | |
1163 | |
1145 ngx_conf_merge_value(conf->upstream.buffering, | 1164 ngx_conf_merge_value(conf->upstream.buffering, |
1146 prev->upstream.buffering, 1); | 1165 prev->upstream.buffering, 1); |
1147 | 1166 |
1148 ngx_conf_merge_value(conf->upstream.ignore_client_abort, | 1167 ngx_conf_merge_value(conf->upstream.ignore_client_abort, |
1149 prev->upstream.ignore_client_abort, 0); | 1168 prev->upstream.ignore_client_abort, 0); |
1157 ngx_conf_merge_msec_value(conf->upstream.send_timeout, | 1176 ngx_conf_merge_msec_value(conf->upstream.send_timeout, |
1158 prev->upstream.send_timeout, 60000); | 1177 prev->upstream.send_timeout, 60000); |
1159 | 1178 |
1160 ngx_conf_merge_msec_value(conf->upstream.read_timeout, | 1179 ngx_conf_merge_msec_value(conf->upstream.read_timeout, |
1161 prev->upstream.read_timeout, 60000); | 1180 prev->upstream.read_timeout, 60000); |
1181 | |
1182 ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout, | |
1183 prev->upstream.next_upstream_timeout, 0); | |
1162 | 1184 |
1163 ngx_conf_merge_size_value(conf->upstream.send_lowat, | 1185 ngx_conf_merge_size_value(conf->upstream.send_lowat, |
1164 prev->upstream.send_lowat, 0); | 1186 prev->upstream.send_lowat, 0); |
1165 | 1187 |
1166 ngx_conf_merge_size_value(conf->upstream.buffer_size, | 1188 ngx_conf_merge_size_value(conf->upstream.buffer_size, |