Why does nginx strip trailing headers from a proxied backend? How can I prevent it?

Maxim Dounin mdounin at mdounin.ru
Mon Jun 8 20:58:10 UTC 2020


On Mon, Jun 08, 2020 at 08:57:56PM +0100, Alan Chandler wrote:

> I have nginx acting as the static file server for a single page 
> web app I am developing. It acts as a proxy server for the 
> "/api" portion on my url space.
> The backend server is running on a different port on local host 
> and is nodejs based.. I'm using nginx as an http2 front end and 
> using http 1/1 between nginx
> and the backend. In the main this is working well.
> But I have one problem. I would like to make use of a trailing 
> header. My outgoing request has the header "TE: trailers", and 
> the response has a header
> "Trailers: API-Status" and then after the body it adds (using 
> nodejs response.addTrailers({'API-Status': 'OK'})).
> But nginx is stripping them out.


> My nginx config for the proxy is
> location /api/ {
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header Host $http_host;
> proxy_set_header X-NginX-Proxy true;
> proxy_http_version 1.1;
> proxy_set_header Connection "";
> proxy_pass http://localhost:2040;
> proxy_redirect default;
> proxy_buffering on;
> proxy_cache off;
> }
> So how do I tell nginx to pass the trailing header?

Trailers are only supported in gRPC proxying (grpc_pass), where 
they are required for gRPC.  Trailers are not supported by 

Maxim Dounin

More information about the nginx mailing list