Nginx 整合 FastDFS 实现文件服务器

上一篇文章《FastDFS 分布式文件系统详解》中带大家详细了解它的核心概念,架构体系及 FastDFS 环境的搭建与使用。但是此时还无法通过 HTTP 对文件进行访问,这篇文章将带大家解决这个问题。
如果我们想通过 HTTP 访问 FastDFS 中保存的图片信息,需要借助其他工具实现,Nginx 就是一个不错的选择,它是一个高性能的 HTTP 和反向代理 Web 服务器。关于 Nginx 更多的内容请阅读《一篇文章搞定 Nginx 反向代理与负载均衡》。

那么问题来了:既然文件都上传至 Storage 服务器了,在 Storage 服务器中直接安装 Nginx 反向代理至文件资源路径,好像就能实现浏览器直接访问文件的效果。究竟是不是这样玩的呢?继续往下看。
其实真实环境中并不是这样使用的,因为 FastDFS 是通过 Tracker 服务器将文件存储在 Storage 服务器中,而且同组存储服务器之间还需要进行文件复制,会有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.10.102,上传成功以后文件相关信息已经返回给客户端了。此时 FastDFS 的集群存储机制会将这个文件同步到同组中的其他机器上进行存储 192.168.10.103,在文件还没有复制完成的情况下,客户端如果用这个文件的相关信息在 192.168.10.103 上进行获取,就会出现文件无法访问的错误。
解决办法就是使用 fastdfs-nginx-module
,它可以重定向文件链接到源服务器进行获取,避免客户端由于复制延迟导致的文件无法访问的错误。
配置 fastdfs-nginx-module
下载资源
Nginx 整合 FastDFS 时 Nginx 需要添加 fastdfs-nginx-module
模块。直接通过 Github:https://github.com/happyfish100/fastdfs-nginx-module 下载压缩包或者使用 git 命令下载,或者通过资源地址:https://sourceforge.net/projects/fastdfs/files/ 下载。
下载以后,上传资源 fastdfs-nginx-module-master.zip
至服务器 /usr/local/src
目录后并解压。
修改配置
复制配置文件 mod_fastdfs.conf
到 /etc/fdfs
目录中。
vim /etc/fdfs/mod_fastdfs.conf
编辑配置文件,主要关注以下部分。
拷贝资源
复制 fastdfs
安装包中的两个配置文件 http.conf
和 mime.types
到 /etc/fdfs
目录中。
安装 Nginx
下载资源
下载 Nginx 并解压。
安装依赖
Nginx 是基于 C 语言开发的,HTTP 模块使用了 pcre 来解析正则表达式,且可以使用 zlib 对 HTTP 包的内容进行 gzip 压缩,Nginx 不仅支持 HTTP 协议,还支持 HTTPS,HTTPS 需要 openssl 提供支持,所以安装 Nginx 之前必须先安装它所依赖的环境。
安装 Nginx
编译并安装。
配置 Nignx
vim /usr/local/nginx/conf/nginx.conf
编辑配置文件,在 80 端口下添加以下内容。关于 Nginx 启动用户的问题请根据自身实际环境进行配置。

测试
启动 Nginx,命令为:/usr/local/nginx/sbin/nginx
此时客户端上传图片以后得到文件名为:group1/M00/00/00/wKgKZl9tkTCAJAanAADhaCZ_RF0495.jpg
浏览器访问:http://192.168.10.102/group1/M00/00/00/wKgKZl9tkTCAJAanAADhaCZ_RF0495.jpg 效果如下:

至此 Nginx 整合 FastDFS 实现文件服务器就到这里,其实目前的环境只是一个单节点的 FastDFS,如果要实现高可用,Tracker
和 Storage
都需要搭建多个节点形成集群环境,后续文章中会详细的教大家搭建 FastDFS 的集群环境。下文我们先解决 Java 客户端如何操作 FastDFS 实现文件上传下载替换删除。

本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议。
🤗 您的点赞
和转发
是对我最大的支持。
📢 扫码关注 哈喽沃德先生
「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~


版权声明: 本文为 InfoQ 作者【哈喽沃德先生】的原创文章。
原文链接:【http://xie.infoq.cn/article/46ed15467b34f451271c9560b】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论