最近在开发一个基于SpringBoot+Netty的聊天APP,分布式图片存储,我选用fastDFS,而fastDFS在CentOS7上和Nginx整合时遇到的问题实在太多了...每一个都很头疼.所以特意开了一个新帖子记录下个人遇到的问题,以及解决方法.

版本:
Nginx版本1.12
linux:CentOS7.5 64x


报错1:
nginx: [emerg] unknown directive "ngx_fastdfs_module" in /usr/local/nginx/conf/nginx.conf:40

造成原因:
下载的fastdfs-nginx-module最新版的master与当前版本nginx有问题,
然后如果自定义配置nginx并添加这个版本的fastdfs-nginx-module在nginx编译安装的时候是不会报错的,这就很难找到错的原因. 但是,在运行nginx的时候,就会报当前这个错误nginx: [emerg] unknown directive "ngx_fastdfs_module" in /usr/local/nginx/conf/nginx.conf:40,让人摸不着头脑.
后来我又重新安装了一遍,但这次不再使用手动添加配置(nginx),直接使用默认的配置并添加模块即 ./configure --add-module=../fastdfs-nginx-module-test/src ,这次居然报错了,但不是同个错误
cc1: all warnings being treated as errors
make[1]: [objs/addon/src/ngx_http_fastdfs_module.o] Error 1
make[1]: Leaving directory `/usr/local/FastDFS/nginx-1.8.1’
make: [build] Error 2
报了以上错误,然后根据这个新的错误,终于找对了方向.

解决报错1: 参考这个大哥


报错2---404:
图片能通过client上传,也能在nginx配置好后,直接访问到,但是当配置上ngx_fastdfs_module;后出现404或者无法访问的情况

image.png

造成原因:
这个原因真的很多...需要很细心的排查每一个出现的可能,而我参考了这个大哥的解决方法后,依旧没有得到有效的解决.因为可能是centos防火墙的原因

解决图片上传成功,但报错404:
首先先按照这个大哥的方法先排除所有问题,然后!!!!! 因为在centos7后,不再用iptables,所以需要设置防火墙关闭云服务器的安全组端口开放
关于centos7的防火墙关闭和永久添加端口,参考这个,
设置好以上问题后,还可能会出现新的问题...报400错误


报错3--400错误:
在一切都配置好后,图片也存在,云服务器安全组端口开发,防火墙端口开放,且关闭后,访问图片链接,仍然无法访问,报400错误!!!!

出现原因:
根据这个错误我找了下往上的答案,很多人都说是mod_fastdfs_conf没配置对,没有和storage.conf的base_path0和group_name对应上,所以出现了重定向错误

解决400错误:
因为一开始看nginx日志没发现有重定向错误的报告,所以花了很多时间,但也由于我没有仔细检查storage.conf和mod_fastdfs_conf的base_path0g'roup_name的原因.所以浪费了好多时间.最后通过重新安装nginx并重新认真配置,最后在nginx的错误日志里发现了重定向信息才恍然大悟!

image.png

看到group_name=group1 是默认配置,我就确信了.之前的mod_fastdfs_conf的组名没有改正确..最后通过/一个一个查,终于找到,并改正.
image.png

nginx组名必须要和storage.conf和mod_fastdfs.conf的都一致,所有用到的端口(内网使用的端口除外)必须在防火墙和云服务器安全组开启!

总结:
学会总结错误,并加以留意才会有前行的力量吧.以上只是大坑,期间遇到过许多小坑.很多时候都想放弃fastDFS了...因为坑实在太多- -,其实说到底还是自己菜吧,菜是原罪.还好,不服输,头铁的精神没有让我轻易放弃,总之也学会了不少东西吧,加油.

我一边踉跄前行,一边重振旗鼓。 ——太宰

收藏