在不中断http下载的情况下重新启动apache http服务器

use*_*145 5 httpd apache-2.2

如果我有 apache 服务器提供的大文件下载,有没有办法在不中断正在进行的文件下载的情况下重新启动/重新加载 http 服务器(例如,使用新的 httpd.conf 更新)?或者至少为客户提供一种恢复下载的方法?

Tob*_*ker 7

正常下载发生在单个 tcp 连接中,没有“通用”方法来重新启动 apache 并维护该单个连接。

但是如果你跑

apachectl -k graceful
Run Code Online (Sandbox Code Playgroud)

或者,如果您向USR1apache 主进程发送信号,那么它将正常重新加载,这意味着它将完成当前正在进行的请求的服务,然后重新加载。

在 http 协议级别,可以只请求文件的一部分。

客户端可以向HEAD服务器发送对给定文件的请求。如果服务器以Accept-Ranges: bytes一个Content-Length标头响应,则客户端可以继续GET使用Range: bytes=...标头发送请求以接收它想要的文件的任何部分。服务器将使用文件的部分内容进行响应,并在其响应中设置 206 状态。

当您要求浏览器恢复下载时,Internet Explorer 和 Firefox 会为正常下载执行此操作。