最近在学习fastdfs时遇到了一个困扰我数小时的问题,结果很感人,特在此记录下来,也是为了让其他小伙伴们避坑
(这里我的fastdfs运行环境是在docker中) 事情是这样的,用APIfox测试fastdfs文件上传的时候发现明明返回的成功的结果但是在浏览器中使用路径却访问不到服务器上的图片,浏览器报错:Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR(服务器拒绝访问),起初以为是没上传成功,所以找到了/var/lib/docker/volumes/fdfs-data/_data/data/00/00
目录下查看图片是存在的,也就是图片上传成功了但是浏览器无法访问,这里给大家提供几个思路参考,然后题最后我是docker中nginx的端口没有配置导致无法访问的
1. 关闭linux的防火墙
systemctl stop firewalld
systemctl disable firewalld # 禁止开机启动
2. 浏览器中的扩展拦截了请求,像广告拦截器等扩展
3. 检查图片路径是否正确,格式:
4.检查端口号(*)
因为storage内部已经集成了nginx,这里的nginx主要提供对FastDFS图片访问的支持,
所以要想访问到文件这里的nginx配置文件中的端口号需要和你项目中端口号一致才能访问,他这里默认端口号是8080,所以你需要来进行访问,我之前是因为忘记配置端口了就直接访问,这样默认使用的是浏览器80端口所以没访问到
解决办法:
- 进入docker容器(docker exec -it storage /bin/bash),修改里面nginx配置(vim /etc/nginx/conf/nginx.conf)
- 可以看到里面的listen 8080,所以跟Java项目中的配置文件fdfs配置:web-server-url: http://ip:8080/保持一致
- 也可以直接都修改成80端口用起来方便,总之看你代码中怎么配置,两者保持一致即可
如果修改了项目中的端口重启项目即可
如果修改了nginx中的端口号退出容器重启docker就能访问了
exit #退出
systemctl restart docker #重启docker
好了,以上就是我解决这个问题时能想到的法子了,希望能帮到大家!