Apache默认支持HTTP范围请求,是断点续传的基础;只要未显式禁用且文件可正常访问,客户端即可通过Range头实现分片下载与续传。

Apache 默认支持 HTTP 范围请求(Range Requests),这是断点续传的基础。只要不显式禁用,且文件能被正常访问,客户端(如 wget、curl、下载工具)就能发起分片请求,实现断点续传。关键不是“开启”功能,而是确保配置不阻断它。
确认 Apache 启用了范围请求支持
Apache 2.4+ 默认启用 mod_headers 和 mod_mime,并默认允许 Accept-Ranges: bytes 响应头。你只需验证当前虚拟主机或目录未禁用该行为:
- 检查配置中是否含有
Header unset Accept-Ranges或AcceptPathInfo Off等干扰项 - 运行
apachectl -M | grep headers确保headers_module已加载 - 用 curl 测试:执行
curl -I http://your-site/file.zip,响应头中应包含Accept-Ranges: bytes
避免影响范围请求的常见配置陷阱
以下配置会意外破坏断点续传能力,需特别留意:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
禁用 ETag 或 Last-Modified:某些 CDN 或反向代理(如 Nginx 前置)若移除这些头,可能导致部分客户端无法校验分片一致性;建议保留或显式设置
FileETag MTime Size -
启用输出过滤(如 mod_deflate)对大文件压缩:压缩后响应体不可随机寻址,Apache 会自动禁用
Accept-Ranges;对 ZIP、MP4、ISO 等二进制文件,应在.htaccess或虚拟主机中排除压缩:<FilesMatch "\.(zip|mp4|iso|rar|7z)$"><br> SetEnv no-gzip 1<br></FilesMatch>
-
使用 mod_xsendfile 或 PHP 输出文件:这类方式绕过 Apache 文件服务逻辑,不会自动添加 Range 支持;必须由后端代码手动处理
Range请求头并返回 206 Partial Content
针对大文件优化传输稳定性
断点续传依赖连接稳定和响应及时,尤其在慢速网络或长连接场景下:
- 增大超时值:在虚拟主机或全局配置中设置
Timeout 600(单位秒),避免大文件传输中途断连 - 关闭 KeepAlive 或调高限制:若并发下载多,可设
KeepAlive On+MaxKeepAliveRequests 200+KeepAliveTimeout 5 - 限制单 IP 连接数(可选):防止恶意占满连接,用
mod_evasive或mod_ratelimit辅助管控
验证断点续传是否生效
最直接的方法是模拟中断重试:
- 用
wget -c http://example.com/large-file.iso下载中途Ctrl+C,再执行相同命令 —— 若看到Continuing in background或Resuming提示即成功 - 用 curl 手动发范围请求:
curl -H "Range: bytes=0-1023" -I http://example.com/file.bin,应返回HTTP/1.1 206 Partial Content及正确Content-Range头

















