I found that this is possible.
The HTTPConnectionManager has a setting called ServerHeaderTransformation:
OVERWRITE
(DEFAULT) Overwrite any Server header with the contents of server_name.
APPEND_IF_ABSENT
If no Server header is present, append Server server_name If a Server header is present, pass it through.
PASS_THROUGH
Pass through the value of the server header, and do not append a header if none is present.
By changing this to PASS_THROUGH
, Envoy won't add this header.
To address the scenario when the backend service adds this header, use the Route's response_headers_to_remove
field.