我使用带有代理路径指令的 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 中与后端对话,我需要在从后端发送的响应中添加内容长度,以避免将编码设置为分块。