忽略或修改 NGINX 中的请求头

3v0*_*0k4 5 nginx

我需要让 NGINX 忽略/修改请求标头。

问题是某些 IoT 设备正在发送带有错误 Content-Length 标头的 HEAD 请求。这使得 NGINX 等待更多内容然后超时。

删除 Content-Length 标头或将其设置为 0 都可以解决问题。

例子

这失败了

HEAD / HTTP/1.1
Host: MY_HOST
Content-Length: 59
Content-Type: text/html
Connection: close
Run Code Online (Sandbox Code Playgroud)

这有效(内容长度:0)

HEAD / HTTP/1.1
Host: MY_HOST
Content-Length: 0
Content-Type: text/html
Connection: close
Run Code Online (Sandbox Code Playgroud)

这也有效(没有内容长度)

HEAD / HTTP/1.1
Host: MY_HOST
Content-Type: text/html
Connection: close
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发生?

3v0*_*0k4 0

我发现有一个名为HeadersMore的 NGINX 模块允许修改输入标头(以及更多内容)。

特别是 more_clear_input_headers 允许删除输入标头, more_set_input_headers 允许修改输入标头。

就我而言

more_clear_input_headers "Content-Length";
Run Code Online (Sandbox Code Playgroud)

或者

more_set_input_headers "Content-Length: 0";
Run Code Online (Sandbox Code Playgroud)