Nginx 如何配置缓存?

推荐答案

在 Nginx 中配置缓存可以通过以下几个步骤实现:

  1. 配置缓存路径: 在 http 块中定义缓存路径和缓存大小。

    • /data/nginx/cache:缓存文件的存储路径。
    • levels=1:2:缓存目录的层级结构。
    • keys_zone=my_cache:10m:定义缓存区域的名称和大小。
    • max_size=10g:缓存的最大大小。
    • inactive=60m:缓存文件在指定时间内未被访问则被删除。
    • use_temp_path=off:禁用临时路径。
  2. 启用缓存: 在 serverlocation 块中启用缓存。

    -- -------------------- ---- -------
    ------ -
        -------- - -
            ----------- ---------
            ----------------- --- --- ----
            ----------------- --- ---
            --------------------- ----- ------- -------- -------- -------- -------- ---------
            ---------- ---------------
        -
    -
    • proxy_cache my_cache:使用之前定义的缓存区域。
    • proxy_cache_valid 200 302 10m:设置状态码为 200 和 302 的响应缓存时间为 10 分钟。
    • proxy_cache_valid 404 1m:设置状态码为 404 的响应缓存时间为 1 分钟。
    • proxy_cache_use_stale:在特定情况下使用过期的缓存。
  3. 清除缓存: 可以通过 proxy_cache_purge 模块来清除缓存。

    • proxy_cache_purge:用于清除指定 URL 的缓存。

本题详细解读

1. 缓存路径配置

在 Nginx 中,缓存路径的配置是通过 proxy_cache_path 指令来完成的。这个指令定义了缓存文件的存储路径、缓存目录的层级结构、缓存区域的大小等。levels=1:2 表示缓存目录的层级结构,keys_zone=my_cache:10m 定义了缓存区域的名称和大小,max_size=10g 设置了缓存的最大大小,inactive=60m 表示缓存文件在 60 分钟内未被访问则被删除。

2. 启用缓存

serverlocation 块中,通过 proxy_cache 指令启用缓存。proxy_cache_valid 指令用于设置不同状态码的缓存时间。例如,proxy_cache_valid 200 302 10m 表示状态码为 200 和 302 的响应缓存时间为 10 分钟。proxy_cache_use_stale 指令允许在特定情况下使用过期的缓存,例如在服务器出现错误或超时时。

3. 清除缓存

Nginx 提供了 proxy_cache_purge 模块来清除缓存。通过配置一个特定的 location 块,可以清除指定 URL 的缓存。proxy_cache_purge my_cache $scheme$proxy_host$request_uri 表示清除指定 URL 的缓存。

4. 其他注意事项

  • 缓存命中率:可以通过 proxy_cache_bypassproxy_no_cache 指令来控制哪些请求不缓存。
  • 缓存键:默认情况下,Nginx 使用请求的 URL 作为缓存键,但可以通过 proxy_cache_key 指令自定义缓存键。
  • 缓存清理:定期清理过期的缓存文件可以防止缓存目录过大,影响性能。

通过以上配置,Nginx 可以有效地缓存静态内容和动态内容,从而提高网站的响应速度和性能。

纠错
反馈