envoyproxy/envoy

feature request: header-matcher allow ignore case

Open

#12,056 opened on Jul 13, 2020

View on GitHub
 (2 comments) (0 reactions) (0 assignees)C++ (5,373 forks)batch import
area/configurationarea/httpenhancementhelp wanted

Repository metrics

Stars
 (27,997 stars)
PR merge metrics
 (Avg merge 8d) (378 merged PRs in 30d)

Description

Envoy normalizes header keys, but not their values for good reason. We use a combination of the :authority header as well as the request path for H1/2 service routing. We have multiple services tied to a single filter chain and virtual host.

excerpt...

	"routes": [{
		"match": {
			"headers": [{
				"exactMatch": "myservice.mydomain.com",
				"name": ":authority"
			}],
			"prefix": "/servce/path"
		},
		"route": {
			"cluster": "mycluster",
		}
	}]
}

However, if there's a discrepancy in the header sent by the client, where for example they use an uppercase letter, then our route matching will not work; :authority = MYservice.MYdomain.com

As I see it, there are at least two options:

  1. add a flag to ignore the case for the header matchers; note that we already have the ignore case flag for the string matchers.
  2. ability to normalize some headers values

We could of course have a workaround using a regex, but the performance implications don't make it a viable option.

similar issues

Contributor guide