Nginx實現動態(tài)內容緩存的示例代碼
在 Nginx 中實現動態(tài)內容的緩存可以顯著提高性能,減少后端服務器的負載。以下是如何在 Nginx 中配置動態(tài)內容緩存的詳細步驟和示例配置。
1. 安裝 Nginx
確保你已經安裝了 Nginx。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt-get update sudo apt-get install nginx
2. 配置緩存目錄
首先,定義一個緩存目錄,用于存儲緩存的數據。
示例配置:
http { # 定義緩存區(qū) proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; # 配置緩存 location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 啟用緩存 proxy_cache my_cache; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 301 302 10m; proxy_cache_valid 404 1m; # 添加緩存控制頭 add_header X-Proxy-Cache $upstream_cache_status; } } }
3. 參數解釋
proxy_cache_path
:定義緩存目錄的路徑、層級結構、緩存區(qū)名稱、最大大小和活動時間。/var/cache/nginx
:緩存目錄路徑。levels=1:2
:緩存文件的層級結構,例如1:2
表示兩級目錄。keys_zone=my_cache:10m
:緩存區(qū)名稱和大小,10MB。max_size=1g
:緩存的最大大小,1GB。inactive=60m
:緩存項在不活躍多久后會被刪除,60分鐘。use_temp_path=off
:禁用臨時文件路徑,直接寫入緩存目錄。
proxy_cache
:啟用緩存,指定緩存區(qū)名稱。proxy_cache_key
:定義緩存鍵,用于唯一標識緩存項。"$scheme$request_method$host$request_uri"
:緩存鍵包含協(xié)議、請求方法、主機名和請求URI。
proxy_cache_valid
:設置不同 HTTP 狀態(tài)碼的緩存時間。200 301 302 10m
:200、301 和 302 狀態(tài)碼的緩存時間為 10 分鐘。404 1m
:404 狀態(tài)碼的緩存時間為 1 分鐘。
add_header X-Proxy-Cache $upstream_cache_status
:添加一個響應頭,顯示緩存狀態(tài)(HIT、MISS、BYPASS 等)。
4. 配置緩存忽略查詢字符串
如果需要忽略查詢字符串,可以在緩存鍵中排除查詢字符串。
示例配置:
http { # 定義緩存區(qū) proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; # 配置緩存 location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 啟用緩存 proxy_cache my_cache; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 301 302 10m; proxy_cache_valid 404 1m; # 忽略查詢字符串 proxy_ignore_headers Cache-Control; proxy_cache_bypass $http_pragma $http_authorization; proxy_no_cache $http_pragma $http_authorization; # 添加緩存控制頭 add_header X-Proxy-Cache $upstream_cache_status; } } }
5. 測試配置
在重新加載 Nginx 之前,先測試配置文件是否有語法錯誤。
sudo nginx -t
6. 重新加載 Nginx
如果配置文件沒有問題,重新加載 Nginx 使配置生效。
sudo systemctl reload nginx
7. 驗證緩存
可以通過查看響應頭中的 X-Proxy-Cache
字段來驗證緩存是否生效。
示例請求:
curl -I http://example.com/some-dynamic-content
示例響應:
HTTP/1.1 200 OK Server: nginx/1.21.3 Date: Tue, 12 Oct 2021 12:34:56 GMT Content-Type: text/html Content-Length: 1234 Connection: keep-alive X-Proxy-Cache: HIT
總結
通過上述配置,Nginx 可以有效地緩存動態(tài)內容,提高系統(tǒng)的性能和響應速度。這些配置可以根據實際需求進行調整,以滿足不同的緩存策略和要求。
到此這篇關于Nginx實現動態(tài)內容緩存的示例代碼的文章就介紹到這了,更多相關Nginx 動態(tài)緩存內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
nginx如何實現同個ip、端口訪問不同的項目(以路徑區(qū)分項目)
這篇文章主要介紹了nginx如何實現同個ip、端口訪問不同的項目(以路徑區(qū)分項目),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_por
nginx為了實現反向代理的需求而增加了一個ngx_http_proxy_module模塊,其中proxy_set_header指令就是該模塊需要讀取的配置文件,這篇文章主要介紹了nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port區(qū)別,需要的朋友可以參考下2024-03-03Nginx Proxy Manager輕松搭建反向代理的實現
NginxProxyManager是一款開源的反向代理和SSL證書管理工具,本文主要介紹了Nginx Proxy Manager輕松搭建反向代理的實現,感興趣的可以了解一下2025-02-02