While setting up the ingress controller I needed a way to pass through the server headers from the proxied web applications.
There wasn't much in the ingress annotations documentation to help me figure out how to remove the default Server: Nginx
header and replace it.
After hunting through different sources I was pretty sure it existed, but couldn't figure out how to disable/change it.
Finally I ended up finding a GH issue that helped inform me that the ingress controller is just openresty (or uses some openresty plugins).
This allowed me to figure out three key things that I needed for overriding.
First, the nginx.ingress.kubernetes.io/configuration-snippet
annotation allows you to customize nginx location.
Next was more_clear_headers Server;
which removes the default Server
header.
Third, was more_set_headers "Server: $upstream_http_server";
which sets the Server
header to what the upstream server header returned.
Putting it all together:
nginx.ingress.kubernetes.io/configuration-snippet: |
more_clear_headers Server;
more_set_headers "Server: $upstream_http_server";
Hopefully this helps someone else.