爲什麼用Nginx做靜態資源服務?¶
Nginx是一款高性能的HTTP和反向代理服務器,非常適合處理靜態資源(如圖片、CSS、JS、PDF等)。相比傳統服務器,它輕量、穩定,能同時處理大量併發請求,且配置簡單。對於圖片、文件這類無需後端動態處理的資源,用Nginx託管可以大大提升訪問速度,節省服務器資源。
一、準備工作:安裝Nginx¶
1. 檢查系統與安裝¶
- Ubuntu/Debian系統:
sudo apt update # 更新軟件源
sudo apt install nginx # 安裝Nginx
- CentOS/RHEL系統:
sudo yum install nginx # 安裝Nginx
2. 啓動Nginx並驗證¶
sudo systemctl start nginx # 啓動Nginx
sudo systemctl enable nginx # 設置開機自啓
sudo systemctl status nginx # 檢查狀態(應顯示active)
驗證是否安裝成功:打開瀏覽器訪問 http://localhost,看到Nginx默認歡迎頁面即表示安裝成功。
二、核心配置:讓Nginx託管靜態資源¶
1. 找到配置文件目錄¶
Nginx的配置文件通常存放在 /etc/nginx/ 目錄下。爲了方便管理,我們可以在 conf.d/ 子目錄中新建配置文件(例如 static.conf):
sudo vim /etc/nginx/conf.d/static.conf
2. 編寫配置文件¶
在 static.conf 中輸入以下內容(以圖片和文件訪問爲例):
server {
listen 80; # 監聽80端口(HTTP默認端口)
server_name localhost; # 本地測試用localhost,也可填服務器IP
# 匹配圖片請求(例如訪問 http://localhost/images/xxx.jpg)
location /images/ {
root /var/www/static; # 圖片實際存放路徑(會拼接路徑:/var/www/static/images/xxx.jpg)
autoindex on; # 開啓目錄瀏覽(訪問文件夾時顯示文件列表)
autoindex_exact_size off; # 顯示文件大小(單位:KB/MB,而非字節)
autoindex_localtime on; # 顯示文件修改時間(本地時間)
}
# 匹配文件下載請求(例如訪問 http://localhost/files/xxx.pdf)
location /files/ {
root /var/www/static; # 文件實際存放路徑(會拼接路徑:/var/www/static/files/xxx.pdf)
autoindex on; # 同上,開啓目錄瀏覽
}
}
3. 解釋關鍵配置項¶
- root:指定資源的根目錄,例如
location /images/會將請求的/images/xxx.jpg映射到root + /images/xxx.jpg(即/var/www/static/images/xxx.jpg)。 - autoindex on:當訪問一個目錄(如
/images/)時,Nginx會列出該目錄下的所有文件,方便用戶直接下載。 - 其他參數:
autoindex_exact_size off和autoindex_localtime on用於美化目錄列表,顯示更友好的文件信息。
三、創建資源目錄並測試訪問¶
1. 創建實際資源目錄¶
根據配置文件中的 root 路徑,創建對應的目錄和測試文件:
sudo mkdir -p /var/www/static/images # 圖片目錄
sudo mkdir -p /var/www/static/files # 文件目錄
# 放入測試圖片(例如1.jpg)
sudo cp /path/to/your/image.jpg /var/www/static/images/1.jpg
# 放入測試文件(例如test.pdf)
sudo cp /path/to/your/file.pdf /var/www/static/files/test.pdf
2. 加載配置並測試¶
sudo nginx -t # 檢查配置文件是否有語法錯誤(必須無錯誤才能繼續)
sudo systemctl reload nginx # 重載配置文件(無需重啓Nginx)
測試圖片訪問:打開瀏覽器訪問 http://localhost/images/1.jpg,若能顯示圖片則成功。
測試文件列表:訪問 http://localhost/images/(目錄),應顯示 1.jpg 等文件,點擊即可下載。
測試文件下載:訪問 http://localhost/files/test.pdf,Nginx會自動觸發文件下載。
四、常見問題與解決¶
1. 配置不生效?¶
- 檢查配置路徑:確認
root路徑是否與實際文件目錄一致,且Nginx用戶(Ubuntu爲www-data,CentOS爲nginx)有讀取權限:
sudo chown -R www-data:www-data /var/www/static # 賦予權限
sudo chmod -R 755 /var/www/static # 目錄權限(可讀可執行)
- 重載配置:修改配置後必須執行
nginx -t檢查,再用systemctl reload nginx生效。
2. 目錄列表不顯示?¶
- 確保
autoindex on已添加到location塊中,且目錄下有文件。
3. 訪問權限403?¶
- 檢查Nginx用戶是否有權限讀取文件:
sudo ls -la /var/www/static # 查看目錄所有者和權限
五、總結¶
Nginx搭建靜態資源服務非常簡單,核心是通過 location 和 root 配置資源路徑,並利用 autoindex 實現目錄瀏覽。適合快速託管圖片、文檔等靜態資源,提升訪問速度和服務器穩定性。
如果需要更復雜的功能(如圖片壓縮、防盜鏈、用戶認證),可以在此基礎上進一步擴展配置。對於初學者,掌握基礎的圖片和文件訪問已足夠應對多數場景。