强制覆盖 nginx 中的 Content-Length

强制覆盖 nginx 中的 Content-Length

出于一个深奥的目的,我想覆盖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"

相关内容