温馨提示×

Nginx缓存策略如何制定

小樊
47
2025-09-12 04:29:49
栏目: 编程语言

Nginx的缓存策略可以通过配置文件中的proxy_cache_pathproxy_cache_key等指令来制定。以下是一些基本的步骤和策略:

1. 配置缓存路径

首先,你需要指定一个目录来存储缓存文件。这个目录应该有足够的空间,并且Nginx进程需要有读写权限。

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
  • levels=1:2:定义了缓存目录的结构。
  • keys_zone=my_cache:10m:定义了一个名为my_cache的缓存区域,大小为10MB。
  • max_size=1g:缓存的最大总大小为1GB。
  • inactive=60m:如果一个对象在60分钟内没有被访问,它将被删除。
  • use_temp_path=off:禁用临时路径,直接使用指定的缓存目录。

2. 配置缓存键

你可以自定义缓存键,以便更精确地控制缓存行为。

proxy_cache_key "$scheme$proxy_host$request_uri";
  • $scheme:协议(http或https)。
  • $proxy_host:代理的主机名。
  • $request_uri:请求的URI。

3. 启用缓存

在你的服务器配置中启用缓存。

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}
  • proxy_cache my_cache:启用之前定义的缓存区域。
  • proxy_cache_valid:定义不同HTTP状态码的缓存时间。
    • 200 302 10m:对于200和302状态码,缓存10分钟。
    • 404 1m:对于404状态码,缓存1分钟。

4. 缓存控制头

你可以通过设置响应头来控制缓存行为。

add_header Cache-Control "public, max-age=3600";
  • Cache-Control:设置缓存控制头,public表示可以被任何缓存存储,max-age=3600表示缓存1小时。

5. 缓存失效策略

你可以使用proxy_cache_bypassproxy_no_cache指令来控制特定条件下的缓存行为。

location /private {
    proxy_pass http://backend;
    proxy_cache_bypass $http_pragma;
    proxy_no_cache $http_pragma;
}
  • proxy_cache_bypass:如果请求头中包含Pragma: no-cache,则不使用缓存。
  • proxy_no_cache:如果请求头中包含Pragma: no-cache,则不缓存响应。

6. 缓存清理

你可以定期清理缓存目录,以避免磁盘空间不足。

find /var/cache/nginx -type f -mtime +30 -delete

这个命令会删除30天前的缓存文件。

通过以上步骤,你可以制定一个基本的Nginx缓存策略。根据具体需求,你可能需要进一步调整和优化这些配置。

0