Nginx缓存实战:这4个配置让性能飙升10倍!

Nginx是大型架构的核心,下面我重点详解Nginx缓存实战@mikechen

Nginx缓存

Nginx 作为高性能的反向代理、与负载均衡服务器,其”缓存功能“在提升 Web 服务响应速度和减轻后端压力方面具有重要作用。

Nginx缓存实战:这4个配置让性能飙升10倍!-mikechen

 

可以,极大的降低后端压力。

比如:大量重复请求(首页、热榜、图片、热门 API),不再回源,节省 CPU、内存。

提升并发能力:当大多数请求命中缓存时,系统能承受更高峰值流量。

Nginx缓存工作机制

Nginx缓存工作原理,如下:

Nginx缓存实战:这4个配置让性能飙升10倍!-mikechen

整体流程;

当客户端发起请求时,Nginx 首先检查本地缓存(通常为磁盘或内存);

若命中缓存(cache hit),直接返回缓存内容;

若未命中(cache miss),Nginx 将请求转发至后端服务器,获取响应后将其写入缓存并返回给客户端。

缓存控制

缓存的有效性由响应头(如 Cache-ControlExpiresETagLast-Modified)。

以及,和 Nginx 配置(如 proxy_cache_validproxy_cache_key)共同决定。

Nginx 可通过配置缓存键、缓存时间和缓存条件来精细控制缓存策略。

Nginx缓存配置

Nginx 支持多种缓存方式,按场景选择组合使用。

Nginx缓存实战:这4个配置让性能飙升10倍!-mikechen

1. 静态资源缓存(浏览器 + Nginx)

适合图片、JS、CSS 等:

location /static/ {
    root /var/www/html;
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

 

2.反向代理缓存

适合 API、页面、动静结合场景:

配置:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:200m max_size=30g inactive=60m use_temp_path=off;

server {
    location /api/hot/ {
        proxy_pass http://backend_pool;
        proxy_cache my_cache;
        proxy_cache_key "$scheme$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;
        proxy_cache_lock on;
        proxy_cache_lock_timeout 5s;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

 

3.秒级缓存

高频但短时容忍一致性损失的接口(热榜、首页):

location /api/top/ {
    proxy_cache my_cache;
    proxy_cache_valid 200 1s;
    proxy_cache_use_stale updating;
}

 

4.FastCGI Cache

适合 PHP、WordPress 等:

fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fcg_cache:100m inactive=60m;
server {
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm.sock;
        fastcgi_cache fcg_cache;
        fastcgi_cache_key "$scheme$request_method$host$request_uri $cookie_user";
        fastcgi_cache_valid 200 302 10m;
        add_header X-Fastcgi-Cache $upstream_cache_status;
    }
}

 

mikechen睿哥

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

评论交流
    说说你的看法