comparison src/stream/ngx_stream_proxy_module.c @ 7371:8b68d50090e4

Upstream: proxy_socket_keepalive and friends. The directives enable the use of the SO_KEEPALIVE option on upstream connections. By default, the value is left unchanged.
author Vladimir Homutov <vl@nginx.com>
date Wed, 03 Oct 2018 14:08:51 +0300
parents 696df3ac27ac
children 04ff25798002
comparison
equal deleted inserted replaced
7370:aa1c9f846567 7371:8b68d50090e4
29 ngx_uint_t responses; 29 ngx_uint_t responses;
30 ngx_uint_t next_upstream_tries; 30 ngx_uint_t next_upstream_tries;
31 ngx_flag_t next_upstream; 31 ngx_flag_t next_upstream;
32 ngx_flag_t proxy_protocol; 32 ngx_flag_t proxy_protocol;
33 ngx_stream_upstream_local_t *local; 33 ngx_stream_upstream_local_t *local;
34 ngx_flag_t socket_keepalive;
34 35
35 #if (NGX_STREAM_SSL) 36 #if (NGX_STREAM_SSL)
36 ngx_flag_t ssl_enable; 37 ngx_flag_t ssl_enable;
37 ngx_flag_t ssl_session_reuse; 38 ngx_flag_t ssl_session_reuse;
38 ngx_uint_t ssl_protocols; 39 ngx_uint_t ssl_protocols;
134 ngx_stream_proxy_bind, 135 ngx_stream_proxy_bind,
135 NGX_STREAM_SRV_CONF_OFFSET, 136 NGX_STREAM_SRV_CONF_OFFSET,
136 0, 137 0,
137 NULL }, 138 NULL },
138 139
140 { ngx_string("proxy_socket_keepalive"),
141 NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_FLAG,
142 ngx_conf_set_flag_slot,
143 NGX_STREAM_SRV_CONF_OFFSET,
144 offsetof(ngx_stream_proxy_srv_conf_t, socket_keepalive),
145 NULL },
146
139 { ngx_string("proxy_connect_timeout"), 147 { ngx_string("proxy_connect_timeout"),
140 NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, 148 NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
141 ngx_conf_set_msec_slot, 149 ngx_conf_set_msec_slot,
142 NGX_STREAM_SRV_CONF_OFFSET, 150 NGX_STREAM_SRV_CONF_OFFSET,
143 offsetof(ngx_stream_proxy_srv_conf_t, connect_timeout), 151 offsetof(ngx_stream_proxy_srv_conf_t, connect_timeout),
384 u->peer.log_error = NGX_ERROR_ERR; 392 u->peer.log_error = NGX_ERROR_ERR;
385 393
386 if (ngx_stream_proxy_set_local(s, u, pscf->local) != NGX_OK) { 394 if (ngx_stream_proxy_set_local(s, u, pscf->local) != NGX_OK) {
387 ngx_stream_proxy_finalize(s, NGX_STREAM_INTERNAL_SERVER_ERROR); 395 ngx_stream_proxy_finalize(s, NGX_STREAM_INTERNAL_SERVER_ERROR);
388 return; 396 return;
397 }
398
399 if (pscf->socket_keepalive) {
400 u->peer.so_keepalive = 1;
389 } 401 }
390 402
391 u->peer.type = c->type; 403 u->peer.type = c->type;
392 u->start_sec = ngx_time(); 404 u->start_sec = ngx_time();
393 405
1896 conf->responses = NGX_CONF_UNSET_UINT; 1908 conf->responses = NGX_CONF_UNSET_UINT;
1897 conf->next_upstream_tries = NGX_CONF_UNSET_UINT; 1909 conf->next_upstream_tries = NGX_CONF_UNSET_UINT;
1898 conf->next_upstream = NGX_CONF_UNSET; 1910 conf->next_upstream = NGX_CONF_UNSET;
1899 conf->proxy_protocol = NGX_CONF_UNSET; 1911 conf->proxy_protocol = NGX_CONF_UNSET;
1900 conf->local = NGX_CONF_UNSET_PTR; 1912 conf->local = NGX_CONF_UNSET_PTR;
1913 conf->socket_keepalive = NGX_CONF_UNSET;
1901 1914
1902 #if (NGX_STREAM_SSL) 1915 #if (NGX_STREAM_SSL)
1903 conf->ssl_enable = NGX_CONF_UNSET; 1916 conf->ssl_enable = NGX_CONF_UNSET;
1904 conf->ssl_session_reuse = NGX_CONF_UNSET; 1917 conf->ssl_session_reuse = NGX_CONF_UNSET;
1905 conf->ssl_server_name = NGX_CONF_UNSET; 1918 conf->ssl_server_name = NGX_CONF_UNSET;
1945 ngx_conf_merge_value(conf->next_upstream, prev->next_upstream, 1); 1958 ngx_conf_merge_value(conf->next_upstream, prev->next_upstream, 1);
1946 1959
1947 ngx_conf_merge_value(conf->proxy_protocol, prev->proxy_protocol, 0); 1960 ngx_conf_merge_value(conf->proxy_protocol, prev->proxy_protocol, 0);
1948 1961
1949 ngx_conf_merge_ptr_value(conf->local, prev->local, NULL); 1962 ngx_conf_merge_ptr_value(conf->local, prev->local, NULL);
1963
1964 ngx_conf_merge_value(conf->socket_keepalive,
1965 prev->socket_keepalive, 0);
1950 1966
1951 #if (NGX_STREAM_SSL) 1967 #if (NGX_STREAM_SSL)
1952 1968
1953 ngx_conf_merge_value(conf->ssl_enable, prev->ssl_enable, 0); 1969 ngx_conf_merge_value(conf->ssl_enable, prev->ssl_enable, 0);
1954 1970