在每台storage服务器主机上部署nginx及FastDFS,由nginx模块对storage存储的文件提供http下载服务,仅当当前storage节点找不到文件时会向源storage主机发起redirect或proxy动作。
目标文件在config的时候写死:/etc/fdfs/mod_fastdfs.conf 。
一些重要参数如下:
group_count //group个数
url_have_group_name //url中是否包含group
group.store_path //group对应的存储路径
connect_timeout //连接超时
network_timeout //接收或发送超时
response_mode //响应模式,proxy或redirect
load_fdfs_parameters_from_tracker //是否从tracker下载服务端配置
根据load_fdfs_parameters_from_tracker参数确定是否从tracker获取server端的配置信息。
(1)load_fdfs_parameters_from_tracker=true。
(2)load_fdfs_parameters_from_tracker=false。
得到group和file_id_without_group两个参数。
防盗链的应用场景,不希望文件被一直分享和下载,则可以在分享文件的时候加上token,其他人在没有token以及超过一定的时间后,无法下载该文件。
(1)配置:
在http.conf文件根据g_http_params.anti_steal_token配置,判断是否进行防盗链检查。
(2)实现方式:
采用token的方式实现防盗链,要求下载地址带上token,且token具有时效性(由ts参数指明)。
(3)检查方式:私钥
token=MD5(file_without_group+privateKey+ts);同时ts没有超过ttl范围。
fdfs_http_shared.h
fdfs_http_check_token(...); //检验token的函数
fdfs_http_gen_token(...); //生成token的函数
更多资源可以参考:
FastDFS的作者介绍的防盗链 使用FastDFS的内置防盗链功能www.cnblogs.com/cnxkey/articles/11154929.html
根据文件ID 获取元数据信息, 包括:源storage ip, 文件路径、名称,大小。
由fdfs_get_file_info_ex1(...)函数实现。
调用trunk_file_stat_ex1获取本地文件信息,该方法将实现:
(1)进行有效性检查:
如果是由其他storage节点redirect过来的请求,其url参数中会存在redirect一项在通过有效性检查之后将进行代理或重定向处理。
(2)重定向模式:
配置项response_mode = redirect,此时服务端返回返回302响应码,url如下:
http:// {源storage地址} : {当前port} {当前url} {参数"redirect=1"}(标记已重定向过)
重定向模式下要求源storage配备公开访问的webserver、同样的端口(一般是80)、同样的path配置。
(3)代理模式:
配置项response_mode = proxy,该模式的工作原理如同反向代理的做法,而仅仅使用源storage地址作为代理proxy的host,其余部分保持不变。
(4)重定向和代理的区别:
重定向:客户端访问某个服务器的资源,然而该服务器没有所请求的资源,但是该服务器检测到集群中的另一台服务器有客户端所请求的资源,因此返回相关的另一台服务器信息给客户端,客户端再重新请求重定向的服务器。
redirect
代理:客户端访问某个服务器的资源,然而该服务器没有所请求的资源,但是该服务器检测到集群中的另一台服务器有客户端所请求的资源,因此该服务器转发请求到另一台服务器获取相关数据,然后再发结果给客户端。
proxy
优缺点:
模式 | 优点 | 缺点 |
---|---|---|
代理 | 只需要验证一次token | 当很多请求都需要转发到另一条服务器,那么将会占用该服务器的带宽,影响效率 |
重定向 | 不会把资源集中在某一台服务器 | 两次请求,需要验证token两次 |
当本地文件存在时,将直接输出。
(1)根据是否trunkfile获取文件名,文件名长度、文件offset。
(2)若nginx开启了send_file开关而且当前为非chunkFile的情况下尝试使用sendfile方法以优化性能。
(3)否则使用lseek 方式随机访问文件,并输出相应的段。做法是使用chunk方式循环读,输出。
本文旨在帮助读者深入了解FastDFS-Nginx fast-mod扩展模块的关键技术要点,以加速分布式文件传输。
1. 介绍该扩展模块的作用和优势,以及它与FastDFS和Nginx的关系,帮助读者理解其在分布式文件传输中的重要性。
2. 详细解释如何安装和配置FastDFS-Nginx fast-mod扩展模块,包括依赖项的安装、模块的编译和加载等步骤。
3. 深入探讨FastDFS-Nginx fast-mod扩展模块的工作原理,包括文件上传和下载的过程、负载均衡和高可用机制等。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。