Nginx FastCGI 快取透過減少 Ubuntu 伺服器上的負載來提高網站的效能。它對於動態內容特別有效,允許 Nginx 直接提供快取內容,而無需使用 PHP 處理器。這可以加快回應時間並降低資源使用率。以下是 Nginx FastCGI Cache 對於您的 Web 基礎架構的主要功能和優點:
- 高效率的內容交付: Nginx FastCGI 快取儲存動態內容輸出,從而實現更快的存取和分發。
- 減少伺服器負載: 提供快取內容可以最大限度地減少 PHP 呼叫次數,從而減輕伺服器的負載。
- 可擴充性: Nginx FastCGI 快取有助於管理增加的流量,而不會隨著網站的成長而影響速度。
- 可自訂的緩存: 此選項可靈活地設定快取過期、繞過和更新條件以滿足您的需求。
- 改進的使用者體驗: 更快的網站載入時間可以改善用戶體驗,對訪客保留和 SEO 排名產生正面影響。
- 資源優化: 優化伺服器資源的利用率,從而更有效地處理並發請求。
- 輕鬆調試: 提供簡單的機制來調試和驗證快取內容,確保平穩運行。
- 相容性: 與流行的 CMS 平台無縫協作,無需大量配置即可增強其效能。
當我們進入技術指南時,請記住,實施 Nginx FastCGI 快取是提高網站效率和使用者滿意度的策略方法。讓我們開始使用 Nginx FastCGI 快取增強網站的效能。
設定 Nginx FastCGI 快取
編輯 FastCGI 快取的 Nginx 設定文件
開啟設定檔
首先,您需要打開 nginx.conf
文件。我們將使用 nano 文字編輯器,但您可以使用任何您喜歡的文字編輯器。輸入這個指令:
sudo nano /etc/nginx/nginx.conf
配置FastCGI參數
在檔案內,找到 HTTP 區塊並新增以下行:
fastcgi_cache_path /var/nginx/fastcgi_cache levels=1:2 keys_zone=fcgicache:150m max_size=20g inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
輸入行後,按 CTRL + O
, 類型 Y
,然後按 CTRL + X
退出。
了解 FastCGI 參數
fastcgi_cache_path
:此參數設定儲存FastCGI快取的位置(/var/nginx/fastcgi_cache
)。它很重要,因為它決定了快取內容的駐留位置。levels=1:2
:這會在您的快取位置下建立一個兩級目錄層次結構。這種設計有助於將檔案分散到兩個目錄中,從而降低磁碟 I/O 瓶頸的風險。keys_zone
:指定共享記憶體區域的名稱(fcgicache
)及其大小(150M
)。共享記憶體區域對於儲存快取鍵和元資料至關重要。max_size
:這定義了快取的最大大小(在本例中,20GB
)。當達到此限制時,最舊的檔案將被刪除,以便為新檔案騰出空間。inactive
:指定多長時間後未存取的資料將從快取中刪除。在此範例中,它設定為 60 分鐘。use_temp_path
:將其設定為off
指示 Nginx 將檔案直接寫入指定的快取資料夾,繞過臨時儲存區域的使用。fastcgi_cache_key
:用於定義快取查找的鍵。 Nginx 建立此金鑰的 MD5 雜湊值以用作快取檔案的名稱。
為 FastCGI 快取配置 Nginx 伺服器區塊
編輯伺服器區塊文件
接下來,您需要編輯伺服器區塊檔案。對於此範例,我們假設該檔案名為 example.com.conf
。使用以下命令打開它:
sudo nano /etc/nginx/sites-available/example.com.conf
插入 FastCGI 快取指令
假設您已安裝 LEMP,請在 PHP 檔案的位置區塊中插入以下行:
fastcgi_cache fcgicache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
add_header X-FastCGI-Cache $upstream_cache_status;
了解 FastCGI 快取指令
fastcgi_cache
:啟用快取並指定先前定義的共享記憶體區域。fastcgi_cache_valid
:定義特定 HTTP 狀態碼的快取持續時間。fastcgi_cache_use_stale
:設定 Nginx 可以使用陳舊快取回應的條件。fastcgi_cache_min_uses
:指定在快取回應之前必須請求回應的頻率。fastcgi_cache_lock
:確保一次只有一個請求填充新的快取元素,從而防止「快取踩踏」。add_header
:新增自訂標頭(X-FastCGI-Cache
) 到 HTTP 回應,指示回應是否是從快取提供的。
在 Nginx 上設定 FastCGI 快取清除
設定快取清除
快取清除可讓您在快取過期之前從快取中刪除內容。若要設定快取清除,請透過在伺服器區塊檔案中插入下列行來建立快取清除指令:
location ~ /purge(/.*) {
# Uncomment the following two lines to allow purge only from the webserver
allow 127.0.0.1;
deny all;
fastcgi_cache_purge fcgicache "$scheme$request_method$host$1";
}
按 CTRL + O
, 類型 Y
,然後按 CTRL + X
退出文字編輯器。
快取清除問題的替代方法
如果您遇到快取清除問題,您可以調整快取過期時間。對於中到高流量的網站,設定較低的過期率,例如 2 小時不活動和 4 小時整體過期,通常會更有效。
測試並重新啟動 Nginx 伺服器
測試配置
驗證 Nginx 設定以避免語法錯誤或設定錯誤至關重要。使用以下命令:
sudo nginx -t
如果一切正確,您應該看到以下輸出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新啟動 Nginx 伺服器
最後,重新啟動 Nginx 伺服器以應用您所做的變更:
sudo systemctl restart nginx
建立和最佳化 Nginx FastCGI 快取目錄
建立FastCGI快取目錄
現在讓我們建立 Nginx 儲存快取檔案的目錄。該路徑已在前面指定 nginx.conf
文件:
sudo mkdir -p /var/nginx/fastcgi_cache
使用 tmpfs 優化快取目錄(可選)
如果您的系統有足夠的 RAM,您可以選擇使用 tmpfs
將快取儲存在記憶體中。與磁碟儲存相比,這可以縮短存取時間。但是,請務必小心,因為儲存在 RAM 中可能會消耗大量記憶體資源。以下是如何將快取目錄掛載為 tmpfs
:
編輯 /etc/fstab
文件:
sudo nano /etc/fstab
在文件末尾新增以下行:
tmpfs /var/nginx/fastcgi_cache tmpfs defaults,size=512M 0 0
這將為快取分配 512MB RAM。您可以根據您的系統資源相應調整大小。
安裝 tmpfs
:
sudo mount -a
此配置可確保 FastCGI 快取儲存在記憶體中,以犧牲 RAM 利用率為代價提供更快的效能。
驗證 Nginx FastCGI 快取功能
使用curl測試FastCGI緩存
您可以使用以下命令驗證 FastCGI 快取是否正常運作 curl
命令。根據您的快取設置,您可能需要多次運行該命令才能看到快取命中:
curl -I http://www.your-domain.com
如果你沒有 curl
已安裝,您可以使用以下命令安裝它:
sudo apt install curl -y
在輸出中,尋找 X-FastCGI-Cache: HIT
標頭:
~$ curl -I https://www.example.com/
HTTP/1.1 200 OK
...
X-FastCGI-Cache: HIT
...
這表示該請求是從快取中提供的。
配置快取排除
不應快取 WordPress 管理頁面、評論部分和網站地圖等網站元素。要設定 Nginx 不快取這些,請在上面新增以下程式碼 location (~\.php$)
伺服器區塊檔案中的行:
# Cache by default
set $skip_cache 0;
# Don't cache URIs containing the following
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-..php|^/feed/|/tag/./feed/|index.php|/.sitemap..(xml|xsl)") {
set $skip_cache 1;
}
# Don't cache for logged-in users or comment authors
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
# POST requests and URIs with a query string should bypass the cache
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
調試緩存排除(可選)
如果您想要新增註釋以進行偵錯,您可以在每個註釋下新增自訂註釋 set $skip_cache 1;
像這樣的聲明:
set $skip_reason "your custom note";
這對於理解為什麼在故障排除期間未快取某些內容非常有用。
完成這些配置後,請確保測試配置並重新啟動 Nginx:
sudo nginx -t
sudo systemctl restart nginx
Nginx FastCGI 快取的最佳實務和注意事項
雖然 FastCGI 快取可以提供顯著的效能優勢,但必須確保配置針對您的特定用例和伺服器資源進行最佳化:
- 在選擇之前評估可用的 RAM 量
tmpfs
用於緩存。確保您的伺服器有足夠的記憶體用於其他關鍵進程。 - 定制緩存排除以適合您的應用程式。提供的範例專門針對 WordPress,但您可能需要針對其他類型的應用程式進行不同的排除。
- 定期監控快取使用情況和效能。如果快取消耗過多磁碟空間或未如預期提高效能,請考慮相應調整快取路徑、大小或設定。
結論
好吧,你已經找到了!我們已經完成了在 Ubuntu 伺服器上安裝 Nginx FastCGI 快取的步驟,透過有效處理動態內容來提高網站的效能。請記住,維護快取設定以滿足網站的需求是實現效益最大化的關鍵。不要迴避調整設定來找到最佳位置。無論您是經驗豐富的專業人士還是伺服器管理新手,我們希望本指南能夠成為優化您的網路形象的得力助手。保持簡單,保持一致,為您和您的訪客提供更快、更流暢的網站體驗!