1 概述
在文件上传的时候,上传成功的信息中有提示我们可以通过某个路径去访问上传的文件,但是我们直接访问这个路径,却不可以,那么已经上传到FastDFS文件系统中的文件,我们如何在浏览器中访问呢?
FastDFS提供了一个Nginx扩展模块,利用该模块,我们可以通过Nginx访问已经上传到FastDFS上的文件,注意只有storage节点才需要安装nginx扩展模块。
2前期准备工作
2.1将Fastdfs的Nginx扩展模块源代码上传到Linux上
上传到:/opt/software目录下
2.2解压下载下来的fastdfs-nginx-module-1.22.tar.gz文件
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
注意此处有大坑。必须执行下面操作,否则安装nginx会报错。
cd /opt/software/fastdfs-nginx-module-1.22/src后编辑config文件,将文件中的两行替换为下面的两行
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
3安装Nginx并且添加fastDFS模块
因为这个模块必须在Nginx的安装的过程中才能添加,所有我们需要重新安装一个nginx,为了和原来已安装的Nginx进行区分,我们把新安装的Nginx取名为nginx_fdfs
3.1将Nginx的tar包上传到Linux上
上传到/opt/software下
3.2解压上传的Nginx文件
tar –zxvf nginx-1.15.10.tar.gz
3.3切换至解压后的Nginx主目录,执行配置操作
cd nginx-1.15.10
./configure --prefix=/usr/local/nginx_fdfs --add-module=/opt /software/ fastdfs-nginx-module-1.22 /src
Ø --prefix是指定nginx安装路径
Ø --add-module指定fastDFS的nginx模块的源代码路径
3.4执行命令进行编译
make
3.5执行命令进行安装
make install
4 FastDFS的Nginx访问配置
4.1将/opt/software/fastdfs-nginx-module-1.22/src(自己实际存放Nginx扩展模块的目录)目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx
cp /opt /software/ fastdfs-nginx-module-1.22 /src/mod_fastdfs.conf /etc/fdfs/
4.2修改mod_fastdfs.conf配置文件
创建扩展模块数据存放目录
mkdir –p /opt/fastdfs/nginx_mod
修改配置文件配置项
base_path=/opt/fastdfs/nginx_mod
tracker_server=192.168.235.128:22122 #多个tracker就写多行,和storage.conf配置相同
group_name #组名,和storage配置相同
url_have_group_name = true #url显示组名称,必须配置为true
4.3配置Nginx的配置文件
#拦截请求路径中包含 /group[1-9]/M0[0-9] 的请求,用 fastdfs的Nginx 模块进行转发,
注意:集群环境下,多个storage节点上的nginx监听端口一定要相同。
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
ngx_fastdfs_module;#这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager
5 FastDFS的Nginx访问启动与测试
5.1启动带有Fastdfs模块的Nginx
5.2重启或启动FastDFS服务进程
fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged /etc/fdfs/storage.conf restart
5.3上传一个文件进行测试验证
fdfs_test /etc/fdfs/client.conf upload /root/aa.txt
5.4在浏览器访问上传的文件
当遇到400错误,检查配置/etc/fdfs/mod_fastdfs.conf url_have_group_name=true
该配置表示访问路径中是否需要带有group1,改为true表示路径中需要有group1