linux

Nginx缓存策略如何配置

小樊
39
2025-08-12 00:37:42
栏目: 编程语言

Nginx的缓存策略可以通过配置文件中的proxy_cache指令来实现。以下是一些基本的配置步骤和示例:

1. 定义缓存区域

首先,你需要定义一个缓存区域,指定缓存的存储路径、大小和其他参数。

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";
        }
    }
}

2. 配置缓存控制头

你可以通过add_header指令添加自定义的缓存控制头,例如:

add_header X-Cache-Status $upstream_cache_status;

3. 设置缓存有效期

使用proxy_cache_valid指令设置不同状态码的缓存有效期:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;

4. 限制缓存的方法

使用proxy_cache_methods指令限制缓存的方法:

proxy_cache_methods GET HEAD;

5. 自定义缓存键

使用proxy_cache_key指令自定义缓存键:

proxy_cache_key "$scheme$request_method$host$request_uri";

6. 清理缓存

使用proxy_cache_purge指令清理缓存:

proxy_cache_purge my_cache "$scheme$request_method$host$request_uri";

7. 其他高级配置

示例配置文件

以下是一个完整的示例配置文件:

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的缓存策略,以满足不同的需求。

0
看了该问题的人还看了