Nginx 整合 FastDFS 實現文件服務器


上一篇文章《FastDFS 分布式文件系統詳解》中帶大家詳細了解它的核心概念,架構體系及 FastDFS 環境的搭建與使用。但是此時還無法通過 HTTP 對文件進行訪問,這篇文章將帶大家解決這個問題。

  如果我們想通過 HTTP 訪問 FastDFS 中保存的圖片信息,需要借助其他工具實現,Nginx 就是一個不錯的選擇,它是一個高性能的 HTTP 和反向代理 Web 服務器。關於 Nginx 更多的內容請閱讀《一篇文章搞定 Nginx 反向代理與負載均衡》。

  

  

  那么問題來了:既然文件都上傳至 Storage 服務器了,在 Storage 服務器中直接安裝 Nginx 反向代理至文件資源路徑,好像就能實現瀏覽器直接訪問文件的效果。究竟是不是這樣玩的呢?繼續往下看。

  其實真實環境中並不是這樣使用的,因為 FastDFS 是通過 Tracker 服務器將文件存儲在 Storage 服務器中,而且同組存儲服務器之間還需要進行文件復制,會有同步延遲的問題。

  假設 Tracker 服務器將文件上傳到了 192.168.10.102,上傳成功以后文件相關信息已經返回給客戶端了。此時 FastDFS 的集群存儲機制會將這個文件同步到同組中的其他機器上進行存儲 192.168.10.103,在文件還沒有復制完成的情況下,客戶端如果用這個文件的相關信息在 192.168.10.103 上進行獲取,就會出現文件無法訪問的錯誤。

  解決辦法就是使用 fastdfs-nginx-module,它可以重定向文件鏈接到源服務器進行獲取,避免客戶端由於復制延遲導致的文件無法訪問的錯誤。

  

配置 fastdfs-nginx-module

  

下載資源

  

  Nginx 整合 FastDFS 時 Nginx 需要添加 fastdfs-nginx-module 模塊。直接通過 Github:https://github.com/happyfish100/fastdfs-nginx-module 下載壓縮包或者使用 git 命令下載,或者通過資源地址:https://sourceforge.net/projects/fastdfs/files/ 下載。

  下載以后,上傳資源 fastdfs-nginx-module-master.zip 至服務器 /usr/local/src 目錄后並解壓。

unzip fastdfs-nginx-module-master.zip

  

修改配置

  

  復制配置文件 mod_fastdfs.conf/etc/fdfs 目錄中。

cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

  

  vim /etc/fdfs/mod_fastdfs.conf 編輯配置文件,主要關注以下部分。

# tracker 服務器的 IP 和端口
tracker_server = 192.168.10.101:22122
# url 地址是否包含組名/卷名
url_have_group_name = true
# 數據組/卷對應的路徑地址
store_path0 = /fastdfs/storage/store

  

拷貝資源

  

  復制 fastdfs 安裝包中的兩個配置文件 http.confmime.types/etc/fdfs 目錄中。

cp /usr/local/src/fastdfs-master/conf/http.conf /etc/fdfs/
cp /usr/local/src/fastdfs-master/conf/mime.types /etc/fdfs/

  

安裝 Nginx

  

下載資源

  

  下載 Nginx 並解壓。

# 下載 nginx 壓縮包
wget -P /usr/local/src http://nginx.org/download/nginx-1.18.0.tar.gz
# 解壓
tar -zxvf /usr/local/src/nginx-1.18.0.tar.gz -C /usr/local/src

  

安裝依賴

  

  Nginx 是基於 C 語言開發的,HTTP 模塊使用了 pcre 來解析正則表達式,且可以使用 zlib 對 HTTP 包的內容進行 gzip 壓縮,Nginx 不僅支持 HTTP 協議,還支持 HTTPS,HTTPS 需要 openssl 提供支持,所以安裝 Nginx 之前必須先安裝它所依賴的環境。

yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl-devel

  

安裝 Nginx

  

  編譯並安裝。

# 切換至 nginx 的解壓目錄
cd /usr/local/src/nginx-1.18.0
# 創建 nginx 的安裝目錄
mkdir -p /usr/local/nginx
# 添加 fastdfs-nginx-module 模塊,指定 nginx 的安裝路徑
./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src --prefix=/usr/local/nginx/
# 編譯並安裝
make && make install

  

配置 Nignx

  

  vim /usr/local/nginx/conf/nginx.conf 編輯配置文件,在 80 端口下添加以下內容。關於 Nginx 啟動用戶的問題請根據自身實際環境進行配置。

location<!--StartFragment-->\~<!--EndFragment-->/group[0-9]/ {
    ngx_fastdfs_module;
}

  

測試

  

  啟動 Nginx,命令為:/usr/local/nginx/sbin/nginx

  此時客戶端上傳圖片以后得到文件名為:group1/M00/00/00/wKgKZl9tkTCAJAanAADhaCZ_RF0495.jpg

  瀏覽器訪問:http://192.168.10.102/group1/M00/00/00/wKgKZl9tkTCAJAanAADhaCZ_RF0495.jpg 效果如下:

  至此 Nginx 整合 FastDFS 實現文件服務器就到這里,其實目前的環境只是一個單節點的 FastDFS,如果要實現高可用,TrackerStorage 都需要搭建多個節點形成集群環境,后續文章中會詳細的教大家搭建 FastDFS 的集群環境。下文我們先解決 Java 客戶端如何操作 FastDFS 實現文件上傳下載替換刪除。

本文采用 知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議

大家可以通過 分類 查看更多關於 FastDFS 的文章。

  

🤗 您的點贊轉發是對我最大的支持。

📢 關注公眾號 哈嘍沃德先生「文檔 + 視頻」每篇文章都配有專門視頻講解,學習更輕松噢 ~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM