出于一个深奥的目的,我想覆盖Content-Length
给定位置的标题。
我可以添加Content-Length
:
location ~ contentlength$ {
add_header Content-Length 999 always;
return 200;
}
Content-Length
但这会导致响应中出现两个标头:
< HTTP/1.1 200 OK
< Server: nginx/1.13.9
< Date: Sat, 05 May 2018 06:46:28 GMT
< Content-Type: text/plain
< Content-Length: 0
< Connection: keep-alive
< Content-Length: 999
我怎样才能覆盖实际内容Content-Length
而不是仅仅标记另一个标题?
(我知道这会破坏一些事情 - 但这是该测试环境中的预期行为)。
答案1
Nginx 有一个可以修改标头的模块,名为 ngx_headers_more:https://github.com/openresty/headers-more-nginx-module#readme
您必须手动安装模块(这涉及重新编译 nginx)或切换到 nginx 的一个分支 openresty。然后您可以使用此指令:
more_set_headers "Content-Length: 999"