删除 nginx proxy_pass 中的 Content-Length 标头

删除 nginx proxy_pass 中的 Content-Length 标头

我使用带有代理路径指令的 nginx。
当代理请求的应用程序返回响应时,nginx 似乎添加了一些包含 Content-Length 的标头。是否可以删除这个额外的标头?

更新

我已使用 more_headers 模块重新安装了 nginx,但结果仍然相同。我的配置是:

upstream my_sock {
   server unix:/tmp/test.sock
   fail_timeout=0;
}

server {
   listen 11111;
   client_max_body_size 4G;
   server_name localhost;

   keepalive_timeout 5;

   location / {
      more_clear_headers 'Content-Length';
      proxy_pass http://my_sock;
      proxy_redirect off;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
    }
}

答案1

您需要安装ngx_headers_more模块,然后使用more_clear_headers:

http://wiki.nginx.org/NginxHttpHeadersMoreModule#more_clear_headers

more_clear_headers 

syntax: more_clear_headers [-t <content-type list>]... [-s <status-code list>]... <new-header>... 

default: no 

context: http, server, location, location if 

phase: output filter

在您的具体情况下,您可能想要添加:

more_clear_headers 'Content-Length';

答案2

这是因为 nginx 在 http 1.0 中与后端对话,我需要在从后端发送的响应中添加内容长度,以避免将编码设置为分块。

相关内容