Nginx Web缓存配置可以通过proxy_cache模块实现,用于缓存后端服务器的响应内容,减少后端服务器的负载并提高响应速度。以下是详细配置说明及案例:

1. 配置缓存路径

首先,需要在Nginx配置文件中定义缓存路径和缓存区域。

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;  # 后端服务器地址
            proxy_cache_valid 200 302 10m;  # 缓存200和302状态码的响应10分钟
            proxy_cache_valid 404 1m;  # 缓存404状态码的响应1分钟
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;  # 在错误时使用过期的缓存
            add_header X-Cache-Status $upstream_cache_status;  # 添加缓存状态头信息
        }
    }
}

2. 配置缓存键

缓存键用于区分不同的缓存内容。默认情况下,Nginx使用完整的URL作为缓存键,但可以通过proxy_cache_key指令自定义。

location / {
    proxy_cache my_cache;
    proxy_pass http://backend_server;
    proxy_cache_key "$scheme$proxy_host$request_uri";  # 自定义缓存键
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    add_header X-Cache-Status $upstream_cache_status;
}

3. 配置缓存绕过

在某些情况下,可能需要绕过缓存,直接请求后端服务器。可以通过proxy_cache_bypassproxy_no_cache指令实现。

location / {
    proxy_cache my_cache;
    proxy_pass http://backend_server;
    proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;  # 当条件满足时绕过缓存
    proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;  # 当条件满足时不缓存
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    add_header X-Cache-Status $upstream_cache_status;
}

4. 配置缓存清理

Nginx本身不提供直接的缓存清理功能,但可以通过第三方模块(如ngx_cache_purge)或手动删除缓存文件来实现。

location ~ /purge(/.*) {
    proxy_cache_purge my_cache "$scheme$proxy_host$1";  # 清理指定URL的缓存
}

5. 完整案例

以下是一个完整的Nginx Web缓存配置案例:

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;
            proxy_cache_key "$scheme$proxy_host$request_uri";
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
            add_header X-Cache-Status $upstream_cache_status;
        }

        location ~ /purge(/.*) {
            proxy_cache_purge my_cache "$scheme$proxy_host$1";
        }
    }
}

6. 注意事项

  • 确保缓存路径/var/cache/nginx存在且Nginx有写入权限。

  • 根据实际需求调整缓存大小、缓存时间等参数。

  • 使用add_header X-Cache-Status $upstream_cache_status;可以方便地查看缓存命中情况。

通过以上配置,Nginx可以有效地缓存Web内容,提升网站性能。

本篇文章内容来源于:NginxWeb缓存配置详细说明以及案例