首页 > 其他分享 >分布式文件系统FastDFS的HTTP访问

分布式文件系统FastDFS的HTTP访问

时间:2023-02-28 11:34:57浏览次数:33  
标签:HTTP nginx fastdfs FastDFS module Nginx 模块 分布式文件系统 fdfs

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/

分布式文件系统FastDFS的HTTP访问_上传

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;  

}

分布式文件系统FastDFS的HTTP访问_Nginx_02

分布式文件系统FastDFS的HTTP访问_nginx_03

ngx_fastdfs_module;#这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager

5 FastDFS的Nginx访问启动与测试

5.1启动带有Fastdfs模块的Nginx

分布式文件系统FastDFS的HTTP访问_上传_04

5.2重启或启动FastDFS服务进程

fdfs_trackerd /etc/fdfs/tracker.conf restart

fdfs_storaged /etc/fdfs/storage.conf restart

分布式文件系统FastDFS的HTTP访问_Nginx_05

5.3上传一个文件进行测试验证

fdfs_test /etc/fdfs/client.conf upload /root/aa.txt

分布式文件系统FastDFS的HTTP访问_fastdfs_06

5.4在浏览器访问上传的文件

当遇到400错误,检查配置/etc/fdfs/mod_fastdfs.conf url_have_group_name=true  

该配置表示访问路径中是否需要带有group1,改为true表示路径中需要有group1

标签:HTTP,nginx,fastdfs,FastDFS,module,Nginx,模块,分布式文件系统,fdfs
From: https://blog.51cto.com/u_15935178/6090621

相关文章

  • IM即时通讯开发如何正确理解HTTP短连接中的Cookie、Session和Token
    众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现。Http短连接主要用于从服务器读取各种持久化信......
  • 如何在IIS中启用HTTPS
    在上篇文章中,介绍了如何安装typecho博客系统,默认是没有启用https访问的,这篇文章介绍如何在IIS中开启https访问。 开启https访问需要两个步骤:1、申请一个ssl证书,我这......
  • 地址重写了,只是ip 没转发,应该是9999那个才对,rewrite /sbgl/(.*) http://127.0.0.1:
        地址重写了,只是ip 没转发,应该是9999那个才对,rewrite /sbgl/(.*)  http://127.0.0.1:9999/$1 permanent;,这样,http://127.0.0.1:9999,proxy_pass http:......
  • FastDFS单机环境搭建
    1官网资料​源码地址:​​https://github.com/happyfish100/fastdfs​​部署资料:​​https://github.com/happyfish100/fastdfs/wiki​​软件下载:​​https://github.com/hap......
  • 通过Zabbix Docker配置HTTPS访问系统
    链接如何通过ZabbixDocker配置HTTPS访问系统?===================================================================================================================......
  • HTTP/2 VS HTTP/3
    HTTP(HypertextTransferProtocol)超文本传输协议是万维网中应用最广泛的应用层传输协议。HTTP起源于80年代末,最初构想是一个基于单行文本的的协议,第一个协议版本是HTT......
  • android开发httpGet httpPost httpURLConnection httpClient
    <pstyle="margin:10pxauto;padding-top:0px;padding-bottom:0px;line-height:18px;color:rgb(68,68,68);font-family:tahoma,arial,sans-serif;"><strong......
  • 随记一下之 http1 http2
    http1和http2的区别http1.0特点:无状态、短连接http1.1特点:长连接、请求管道化、缓存处理、Host字段、断点传输http2.0特点:二进制传输、多路复用、头部压缩、服......
  • HTTP
    超文本传输协议HTTP(HypterTextTransferProtocol)是应用级协议,它适应了分布式超媒体协作系统对灵活性及速度的要求。它是一个一般的、无状态的、基于对象的协议,是一个......
  • 响应对象主要有三种形式:HttpResponse() render() redirect()
    render()参数:request:用于生成响应的请求对象。template_name:要使用的模板的完整名称,可选的参数context:添加到模板上下文的一个字典。默认是一个空字......