Nginx对range协议支持的非常好,因为range协议主要增加了一些HTTP头部处理流程,以及发送文件时的偏移量处理。Nginx设计了HTTP过滤模块,每个请求可以由许多HTTP过滤模块处理,而http_range_header_filter模块就是用来处理HTTP请求头部range部分,它会解析客户端请求中的range头部,最后告知在发送HTTP响应包体时将会调用到ngx_http_range_body_filter_module模块,该模块会按照range协议修改指向文件的ngx_buf_t缓冲区的file_pos和file_last成员,以此实现仅发送一个文件的部分内容到客户端。
其实,支持range协议对我们来说很简单,只需要在发送前设置ngx_http_request_t的成员allow_ranges变量为1即可,之后的都会由HTTP框架完成。eg:
r->allow_ranges = 1;
这样,我们就支持多线程下载和断点续传。
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了Nginx支持用户多线程下载和断点续传,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!