diff --git a/pkg/compute/models/loadbalanceragents.go b/pkg/compute/models/loadbalanceragents.go index 160f0e55e3..992b916115 100644 --- a/pkg/compute/models/loadbalanceragents.go +++ b/pkg/compute/models/loadbalanceragents.go @@ -104,6 +104,7 @@ type SLoadbalancerAgentParamsHaproxy struct { LogHttp bool LogTcp bool LogNormal bool + TuneHttpMaxhdr int } type SLoadbalancerAgentParamsTelegraf struct { @@ -196,6 +197,12 @@ func (p *SLoadbalancerAgentParamsHaproxy) Validate(data *jsonutils.JSONDict) err // This is a limit imposed by haproxy and arch word size p.GlobalNbthread = 64 } + if p.TuneHttpMaxhdr < 0 { + p.TuneHttpMaxhdr = 0 + } + if p.TuneHttpMaxhdr > 32767 { + p.TuneHttpMaxhdr = 32767 + } return nil } @@ -761,6 +768,7 @@ global maxconn 20480 tune.ssl.default-dh-param 2048 {{- println }} + {{- if .haproxy.tune_http_maxhdr }} tune.http.maxhdr {{ println .haproxy.tune_http_maxhdr }} {{- end }} {{- if .haproxy.global_stats_socket }} {{ println .haproxy.global_stats_socket }} {{- end }} {{- if .haproxy.global_nbthread }} nbthread {{ println .haproxy.global_nbthread }} {{- end }} {{- if .haproxy.global_log }} {{ println .haproxy.global_log }} {{- end }} diff --git a/pkg/mcclient/models/loadbalancers.go b/pkg/mcclient/models/loadbalancers.go index 158861bac2..1452b1a968 100644 --- a/pkg/mcclient/models/loadbalancers.go +++ b/pkg/mcclient/models/loadbalancers.go @@ -234,6 +234,7 @@ type LoadbalancerAgentParamsHaproxy struct { LogHttp bool LogTcp bool LogNormal bool + TuneHttpMaxhdr int } type LoadbalancerAgentParamsTelegraf struct { diff --git a/pkg/mcclient/options/loadbalanceragents.go b/pkg/mcclient/options/loadbalanceragents.go index 85276f08f9..bcb9e15092 100644 --- a/pkg/mcclient/options/loadbalanceragents.go +++ b/pkg/mcclient/options/loadbalanceragents.go @@ -43,6 +43,7 @@ type LoadbalancerAgentParamsOptions struct { HaproxyLogHttp string `choices:"true|false"` HaproxyLogTcp string `choices:"true|false"` HaproxyLogNormal string `choices:"true|false"` + HaproxyTuneHttpMaxhdr *int `help:"max number of http headers allowed"` TelegrafInfluxDbOutputUrl string TelegrafInfluxDbOutputName string