offsetof(ngx_http_fastcgi_loc_conf_t, upstream.socket_keepalive),
NULL },
+ { ngx_string("fastcgi_socket_rcvbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_fastcgi_loc_conf_t, upstream.socket_rcvbuf),
+ NULL },
+
+ { ngx_string("fastcgi_socket_sndbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_fastcgi_loc_conf_t, upstream.socket_sndbuf),
+ NULL },
+
{ ngx_string("fastcgi_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
conf->upstream.local = NGX_CONF_UNSET_PTR;
conf->upstream.socket_keepalive = NGX_CONF_UNSET;
+ conf->upstream.socket_rcvbuf = NGX_CONF_UNSET_SIZE;
+ conf->upstream.socket_sndbuf = NGX_CONF_UNSET_SIZE;
conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
ngx_conf_merge_value(conf->upstream.socket_keepalive,
prev->upstream.socket_keepalive, 0);
+ ngx_conf_merge_size_value(conf->upstream.socket_rcvbuf,
+ prev->upstream.socket_rcvbuf, 0);
+
+ ngx_conf_merge_size_value(conf->upstream.socket_sndbuf,
+ prev->upstream.socket_sndbuf, 0);
+
ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
prev->upstream.connect_timeout, 60000);
offsetof(ngx_http_grpc_loc_conf_t, upstream.socket_keepalive),
NULL },
+ { ngx_string("grpc_socket_rcvbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_grpc_loc_conf_t, upstream.socket_rcvbuf),
+ NULL },
+
+ { ngx_string("grpc_socket_sndbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_grpc_loc_conf_t, upstream.socket_sndbuf),
+ NULL },
+
{ ngx_string("grpc_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
conf->upstream.local = NGX_CONF_UNSET_PTR;
conf->upstream.socket_keepalive = NGX_CONF_UNSET;
+ conf->upstream.socket_rcvbuf = NGX_CONF_UNSET_SIZE;
+ conf->upstream.socket_sndbuf = NGX_CONF_UNSET_SIZE;
conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT;
conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
ngx_conf_merge_value(conf->upstream.socket_keepalive,
prev->upstream.socket_keepalive, 0);
+ ngx_conf_merge_size_value(conf->upstream.socket_rcvbuf,
+ prev->upstream.socket_rcvbuf, 0);
+
+ ngx_conf_merge_size_value(conf->upstream.socket_sndbuf,
+ prev->upstream.socket_sndbuf, 0);
+
ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries,
prev->upstream.next_upstream_tries, 0);
offsetof(ngx_http_proxy_loc_conf_t, upstream.socket_keepalive),
NULL },
+ { ngx_string("proxy_socket_rcvbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_proxy_loc_conf_t, upstream.socket_rcvbuf),
+ NULL },
+
+ { ngx_string("proxy_socket_sndbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_proxy_loc_conf_t, upstream.socket_sndbuf),
+ NULL },
+
{ ngx_string("proxy_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
conf->upstream.local = NGX_CONF_UNSET_PTR;
conf->upstream.socket_keepalive = NGX_CONF_UNSET;
+ conf->upstream.socket_rcvbuf = NGX_CONF_UNSET_SIZE;
+ conf->upstream.socket_sndbuf = NGX_CONF_UNSET_SIZE;
conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
ngx_conf_merge_value(conf->upstream.socket_keepalive,
prev->upstream.socket_keepalive, 0);
+ ngx_conf_merge_size_value(conf->upstream.socket_rcvbuf,
+ prev->upstream.socket_rcvbuf, 0);
+
+ ngx_conf_merge_size_value(conf->upstream.socket_sndbuf,
+ prev->upstream.socket_sndbuf, 0);
+
ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
prev->upstream.connect_timeout, 60000);
offsetof(ngx_http_scgi_loc_conf_t, upstream.socket_keepalive),
NULL },
+ { ngx_string("scgi_socket_rcvbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_scgi_loc_conf_t, upstream.socket_rcvbuf),
+ NULL },
+
+ { ngx_string("scgi_socket_sndbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_scgi_loc_conf_t, upstream.socket_sndbuf),
+ NULL },
+
{ ngx_string("scgi_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
conf->upstream.local = NGX_CONF_UNSET_PTR;
conf->upstream.socket_keepalive = NGX_CONF_UNSET;
+ conf->upstream.socket_rcvbuf = NGX_CONF_UNSET_SIZE;
+ conf->upstream.socket_sndbuf = NGX_CONF_UNSET_SIZE;
conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
ngx_conf_merge_value(conf->upstream.socket_keepalive,
prev->upstream.socket_keepalive, 0);
+ ngx_conf_merge_size_value(conf->upstream.socket_rcvbuf,
+ prev->upstream.socket_rcvbuf, 0);
+
+ ngx_conf_merge_size_value(conf->upstream.socket_sndbuf,
+ prev->upstream.socket_sndbuf, 0);
+
ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
prev->upstream.connect_timeout, 60000);
offsetof(ngx_http_tunnel_loc_conf_t, upstream.socket_keepalive),
NULL },
+ { ngx_string("tunnel_socket_rcvbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_tunnel_loc_conf_t, upstream.socket_rcvbuf),
+ NULL },
+
+ { ngx_string("tunnel_socket_sndbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_tunnel_loc_conf_t, upstream.socket_sndbuf),
+ NULL },
+
{ ngx_string("tunnel_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
conf->upstream.local = NGX_CONF_UNSET_PTR;
conf->upstream.socket_keepalive = NGX_CONF_UNSET;
+ conf->upstream.socket_rcvbuf = NGX_CONF_UNSET_SIZE;
+ conf->upstream.socket_sndbuf = NGX_CONF_UNSET_SIZE;
conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
ngx_conf_merge_value(conf->upstream.socket_keepalive,
prev->upstream.socket_keepalive, 0);
+ ngx_conf_merge_size_value(conf->upstream.socket_rcvbuf,
+ prev->upstream.socket_rcvbuf, 0);
+
+ ngx_conf_merge_size_value(conf->upstream.socket_sndbuf,
+ prev->upstream.socket_sndbuf, 0);
+
ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
prev->upstream.connect_timeout, 60000);
offsetof(ngx_http_uwsgi_loc_conf_t, upstream.socket_keepalive),
NULL },
+ { ngx_string("uwsgi_socket_rcvbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_uwsgi_loc_conf_t, upstream.socket_rcvbuf),
+ NULL },
+
+ { ngx_string("uwsgi_socket_sndbuf"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_uwsgi_loc_conf_t, upstream.socket_sndbuf),
+ NULL },
+
{ ngx_string("uwsgi_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
conf->upstream.local = NGX_CONF_UNSET_PTR;
conf->upstream.socket_keepalive = NGX_CONF_UNSET;
+ conf->upstream.socket_rcvbuf = NGX_CONF_UNSET_SIZE;
+ conf->upstream.socket_sndbuf = NGX_CONF_UNSET_SIZE;
conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
ngx_conf_merge_value(conf->upstream.socket_keepalive,
prev->upstream.socket_keepalive, 0);
+ ngx_conf_merge_size_value(conf->upstream.socket_rcvbuf,
+ prev->upstream.socket_rcvbuf, 0);
+
+ ngx_conf_merge_size_value(conf->upstream.socket_sndbuf,
+ prev->upstream.socket_sndbuf, 0);
+
ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
prev->upstream.connect_timeout, 60000);
u->peer.so_keepalive = 1;
}
+ if (u->conf->socket_rcvbuf) {
+ u->peer.rcvbuf = (int) u->conf->socket_rcvbuf;
+ }
+
+ if (u->conf->socket_sndbuf) {
+ u->peer.sndbuf = (int) u->conf->socket_sndbuf;
+ }
+
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
u->output.alignment = clcf->directio_alignment;
ngx_http_upstream_local_t *local;
ngx_flag_t socket_keepalive;
+ size_t socket_rcvbuf;
+ size_t socket_sndbuf;
#if (NGX_HTTP_CACHE)
ngx_shm_zone_t *cache_zone;