nginx+fastdfs 502异常解决

使用fastdfs加两台storage,一台做备份使用时,发现有一类文件名是以“ag-”开头,使用<img>标签即时显示的时候会报502异常,

查看nginx的error.log得到

2017/09/25 17:39:09 [error] 13333#0: *30734 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 10.24.169.19, server: localhost, request: "GET /group1/M00/01/5E/ag-JjlnIzqmAdi3UAAOreY6LKcM688.jpg HTTP/1.1", upstream: "http://106.15.137.142:8081/group1/M00/01/5E/ag-JjlnIzqmAdi3UAAOreY6LKcM688.jpg?redirect=1", host: "10.135.237.203:8081"


分析一下客户端与nginx的交互过程如下:


一般Nginx与Tracker装在一台服务器上,所以他们之间的通信一般不会时间太长而导致超时


但是Nginx与Storage一般不再一台机器上,因此Nginx与Storage之间的通信可能会timeout,从而导致502异常。

所以需要在Nginx中添加如下配置

location /group1/M00{
                        add_header Content-Disposition "attachment;filename=$arg_n";
                        add_header Access-Control-Allow-Origin "*";
                        root /home/ubuntu/fastdfs/nginx-link/data;
                        ngx_fastdfs_module;
                        proxy_connect_timeout 300s;
                        proxy_send_timeout 300s;
                        proxy_read_timeout 300s;

                }

后来发现,还是解决不了这个问题,继续分析发现另外一台的Storage上的文件是访问不了的,检查一看nginx_fastdfs_module没有配置,添加上去后,重启nginx,发现502的异常解决了但是偶尔会出现插入的图片需要很长时间才能显示出来。


讲过一番思考后,发现这是Storage同步延迟的结果,大概是这样的Tracker将文件放在StorageA上,但是访问的时候,Tracker发现StorageB也是可用的,就返回了StorageB的IP与端口。但是此时StorageB还没有此文件,所以一直等待,直到StorageB同步StorageA的数据。


查看Tracker的配置文件有如下配置:

# which storage server to download file
# 0: round robin (default)
# 1: the source storage server which the current file uploaded to
download_server=1


意思是选择哪一个Storage 服务器去下载文件0代表轮询,为默认值,1代表从当前文件的源文件服务器上下载文件

此时设为1,就好了。


那么Tracker是怎么判断哪一台是源务器的呢?是根据文件名,Tracker_Nginx_Module可以根据文件名反解出源服务器IP,文件时间戳,根据这两点就可以找到源Storage服务器了。


参考:1.http://www.bubuko.com/infodetail-1873115.html

           2.http://blog.csdn.net/mr_smile2014/article/details/52118541

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些基本的步骤。首先,您需要安装 NginxFastDFS 的依赖库和工具。然后按照以下步骤操作: 1. 下载并安装 FastDFS 您可以从官网下载 FastDFS 的源码包,然后解压到本地。进入解压后的目录,执行以下命令: ``` ./make.sh ./make.sh install ``` 这将编译并安装 FastDFS。安装完成后,需要修改配置文件 tracker.conf 和 storage.conf,配置 FastDFS 的基本参数。 2. 下载并安装 Nginx 您可以从 Nginx 官网下载 Nginx 的源码包,然后解压到本地。进入解压后的目录,执行以下命令: ``` ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/path/to/fastdfs-nginx-module/src make make install ``` 这将编译并安装 Nginx。安装完成后,需要修改配置文件 nginx.conf,启用 FastDFS 模块并配置基本参数。 3. 启动 FastDFSNginx 启动 FastDFSNginx 只需要执行以下命令: ``` /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf /usr/bin/fdfs_storaged /etc/fdfs/storage.conf /usr/local/nginx/sbin/nginx ``` 这将启动 FastDFSTracker 和 Storage,以及 Nginx。至此,您已经成功搭建了 Nginx+FastDFS 环境。 请注意,这只是一个基本的搭建步骤,具体的配置和调优还需要您根据自己的需求进行调整。另外,为了保证安全性和稳定性,建议您在生产环境中使用 HTTPS 协议,并且配置合适的防火墙和安全策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值