Nginx的緩存策略可以通過配置文件中的proxy_cache指令來實現。以下是一些基本的配置步驟和示例:
首先,你需要定義一個緩存區域,指定緩存的存儲路徑、大小和其他參數。
http {
# 定義緩存區域
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_cache my_cache;
proxy_pass http://backend_server;
# 緩存控制頭
add_header X-Cache-Status $upstream_cache_status;
# 緩存有效期
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# 緩存方法
proxy_cache_methods GET HEAD;
# 緩存鍵
proxy_cache_key "$scheme$request_method$host$request_uri";
# 緩存清理
proxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
}
}
}
你可以通過add_header指令添加自定義的緩存控制頭,例如:
add_header X-Cache-Status $upstream_cache_status;
使用proxy_cache_valid指令設置不同狀態碼的緩存有效期:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
使用proxy_cache_methods指令限制緩存的方法:
proxy_cache_methods GET HEAD;
使用proxy_cache_key指令自定義緩存鍵:
proxy_cache_key "$scheme$request_method$host$request_uri";
使用proxy_cache_purge指令清理緩存:
proxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
proxy_cache_path指令中的levels參數定義了緩存目錄的層級結構,keys_zone定義了緩存區域的名稱和大小,max_size定義了緩存的最大大小,inactive定義了緩存項在不被訪問時的最大存活時間,use_temp_path設置為off可以避免使用臨時文件路徑。proxy_cache_purge指令可以用來清理特定的緩存項,需要確保Nginx編譯時啟用了ngx_http_proxy_module模塊。以下是一個完整的示例配置文件:
http {
# 定義緩存區域
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_cache my_cache;
proxy_pass http://backend_server;
# 緩存控制頭
add_header X-Cache-Status $upstream_cache_status;
# 緩存有效期
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# 緩存方法
proxy_cache_methods GET HEAD;
# 緩存鍵
proxy_cache_key "$scheme$request_method$host$request_uri";
# 緩存清理
proxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
}
}
}
通過以上配置,你可以靈活地控制Nginx的緩存策略,以滿足不同的需求。