proxy_force_ranges
proxy_force_ranges 指令允许 NGINX 通过代理提供部分内容请求,方法是强制代理处理 Range 请求。 — NGINX HTTP Core
proxy_force_ranges
httpserverlocation
语法proxy_force_ranges on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag
说明
`proxy_force_ranges` 指令在设置为 `on` 时,指示 NGINX 对代理内容启用 Range 请求。该指令在上游服务器不支持 Range 请求时尤其重要,因为它通过允许 NGINX 在需要时操作 Range 头,确保仍能正确提供部分内容。这实际上允许客户端请求资源的特定部分,从而减少带宽使用并提高大型文件(例如视频或归档文件)的响应性。 启用该指令后,NGINX 完全控制来自客户端的 Range 请求,并将所需的范围转发给上游服务器。如果上游服务器不支持 Range 请求,NGINX 将对接收到的数据进行必要的分段处理,并像上游支持 Range 一样将其交付给客户端,从而即使上游服务能力有限也能确保无缝运行。这在处理大型数据集或媒体文件的场景中尤其能提升客户端体验。 需要注意的是,由于处理 Range 请求需要额外的处理,尤其是在代理完整内容且上游不直接处理 Range 请求的情况下,使用该指令可能会略微影响性能。此外,启用此指令会增加响应处理的复杂性,因为 NGINX 必须仔细管理客户端指定的字节范围以及从上游服务器接收的响应。
配置示例
location /files {
proxy_pass http://backend;
proxy_force_ranges on;
}⚠
确保上游服务器无法处理范围请求,否则可能导致意外行为。
⚠
启用时,该指令需要进行适当的测试,以确保不会因 NGINX 在管理范围请求时的开销而导致性能意外下降。