最近在學習fastdfs時遇到了一個困擾我數小時的問題,結果很感人,特在此記錄下來,也是為了讓其他小伙伴們避坑 (這裡我的fastdfs運行環境是在docker中) 事情是這樣的,用APIfox測試fastdfs文件上傳的時候發現明明返回的成功的結果但是在瀏覽器中使用路徑卻訪問不到伺服器上的圖片,瀏 ...
最近在學習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. 檢查圖片路徑是否正確,格式:http://ip:埠號/group1/M00/00/00/wKjTgGN6XVaAXACdAAAVFZU5FfY629.png
4.檢查埠號(*)
因為storage內部已經集成了nginx,這裡的nginx主要提供對FastDFS圖片訪問的支持,
所以要想訪問到文件這裡的nginx配置文件中的埠號需要和你項目中埠號一致才能訪問,他這裡預設埠號是8080,所以你需要http://ip:8080/group1/M00/00/00/wKjTgGN6XVaAXACdAAAVFZU5FfY629.png來進行訪問,我之前是因為忘記配置埠了就直接訪問http://ip/group1/M00/00/00/wKjTgGN6XVaAXACdAAAVFZU5FfY629.png,這樣預設使用的是瀏覽器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
好了,以上就是我解決這個問題時能想到的法子了,希望能幫到大家!