Feature request
Expose nginx's large_client_header_buffers as a BOSH property on the cloud_controller_ng job.
Context
CF v3 encourages guid-list filters on list endpoints (guids=, space_guids=, organization_guids=, user_guids=, ...). Clients that resolve or enrich entities in bulk legitimately build long request URIs — 200 guids is already ~7.5KB encoded.
jobs/cloud_controller_ng/templates/nginx.conf.erb does not set large_client_header_buffers, so CC's fronting nginx runs the compiled default (4 8k): request lines over ~8KB are rejected with 414 Request-URI Too Large before reaching Cloud Controller. There is no BOSH property to change this — an operator who needs wider filter URIs has to fork the job template.
Client-side impact precedent: cloudfoundry/cli#2220 (cf routes failing with 414 on /v3/apps?guids= for larger foundations; the v8 fix batches at 200 guids per request). Stratos hits the same wall (cloudfoundry/stratos#5579).
Proposal
Add a property, e.g.:
cc.nginx_large_client_header_buffers:
description: "Value for nginx large_client_header_buffers (number and size of buffers for large request headers, including the request line). nginx default is '4 8k'."
default: "4 8k"
rendered into the http block of nginx.conf.erb. This follows the pattern of the request-shaping knobs already exposed there (cc.client_max_body_size, cc.nginx_rate_limit_general, cc.nginx_rate_limit_zones).
Notes for the docs/description
- The next wall is puma's query-string parser cap (10KB,
PUMA_QUERY_STRING_MAX_LENGTH), so the useful range for this property without also touching puma is roughly 8k-10k.
- The effective limit a client experiences is the minimum across every hop in front of CC (edge load balancers, proxies, gorouter, this nginx). It would help operators if the property description says this plainly — raising CC's buffer only helps if the rest of the chain also allows longer request lines.
Feature request
Expose nginx's
large_client_header_buffersas a BOSH property on thecloud_controller_ngjob.Context
CF v3 encourages guid-list filters on list endpoints (
guids=,space_guids=,organization_guids=,user_guids=, ...). Clients that resolve or enrich entities in bulk legitimately build long request URIs — 200 guids is already ~7.5KB encoded.jobs/cloud_controller_ng/templates/nginx.conf.erbdoes not setlarge_client_header_buffers, so CC's fronting nginx runs the compiled default (4 8k): request lines over ~8KB are rejected with414 Request-URI Too Largebefore reaching Cloud Controller. There is no BOSH property to change this — an operator who needs wider filter URIs has to fork the job template.Client-side impact precedent: cloudfoundry/cli#2220 (
cf routesfailing with 414 on/v3/apps?guids=for larger foundations; the v8 fix batches at 200 guids per request). Stratos hits the same wall (cloudfoundry/stratos#5579).Proposal
Add a property, e.g.:
rendered into the
httpblock ofnginx.conf.erb. This follows the pattern of the request-shaping knobs already exposed there (cc.client_max_body_size,cc.nginx_rate_limit_general,cc.nginx_rate_limit_zones).Notes for the docs/description
PUMA_QUERY_STRING_MAX_LENGTH), so the useful range for this property without also touching puma is roughly 8k-10k.