在现代 Web 开发中,网站性能至关重要。而 Nginx 代理缓存 是提升网站响应速度、减轻后端服务器压力的利器。本文将手把手教你如何配置 Nginx 的反向代理缓存功能,即使你是刚入门的小白,也能轻松上手!
什么是 Nginx 代理缓存?
Nginx 不仅是一个高性能的 Web 服务器,还可以作为反向代理服务器使用。当启用代理缓存功能后,Nginx 会把后端服务器(如 PHP-FPM、Node.js、Java 应用等)返回的内容临时存储在本地磁盘或内存中。当下一次有相同请求到来时,Nginx 就可以直接从缓存中返回内容,而无需再次请求后端,从而显著提升响应速度并降低服务器负载。
准备工作
在开始之前,请确保你已经:
- 安装了 Nginx(建议版本 ≥ 1.10)
- 拥有对服务器的 root 或 sudo 权限
- 有一个可访问的后端服务(例如运行在 localhost:8080 的应用)
第一步:配置缓存路径
首先,我们需要在 Nginx 配置文件中定义一个缓存区域。通常这个配置写在 http 块中。
http { # 定义缓存区:名称为 my_cache,存储在 /var/cache/nginx 目录, # 最大缓存大小为 10GB,内存索引最大 10MB proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; # 其他配置...} 参数说明:
keys_zone=my_cache:10m:缓存索引保存在内存中,名为my_cache,占用 10MB 内存(约可缓存 8 万个条目)。max_size=10g:磁盘缓存最大为 10GB。inactive=60m:如果某个缓存项在 60 分钟内未被访问,将被自动删除。use_temp_path=off:避免使用临时文件,提高性能。
第二步:在 server 块中启用缓存
接下来,在你的站点配置(通常位于 /etc/nginx/sites-available/)中启用缓存:
server { listen 80; server_name example.com; location / { # 启用名为 my_cache 的缓存区 proxy_cache my_cache; # 设置缓存键(决定哪些请求被视为“相同”) proxy_cache_key "$scheme$request_method$host$request_uri"; # 对于 200 和 302 响应,缓存 10 分钟 proxy_cache_valid 200 302 10m; # 对于 404 响应,缓存 1 分钟 proxy_cache_valid 404 1m; # 将请求转发给后端 proxy_pass http://localhost:8080; # 添加缓存状态头,便于调试 add_header X-Cache-Status $upstream_cache_status; }} 其中 $upstream_cache_status 会返回以下值之一:
- HIT:请求命中缓存
- MISS:未命中,已从后端获取并存入缓存
- BYPASS:因配置跳过缓存(如设置了
proxy_cache_bypass) - EXPIRED:缓存已过期,重新从后端获取
第三步:创建缓存目录并重载 Nginx
执行以下命令创建缓存目录并赋予 Nginx 用户权限:
sudo mkdir -p /var/cache/nginxsudo chown -R www-data:www-data /var/cache/nginx # Ubuntu/Debian 系统# 或者 CentOS/RHEL: sudo chown -R nginx:nginx /var/cache/nginxsudo nginx -t # 测试配置是否正确sudo systemctl reload nginx # 重载配置 第四步:验证缓存是否生效
使用 curl 命令测试:
curl -I http://example.com/ 第一次请求你会看到:
X-Cache-Status: MISS
刷新一次后再请求:
X-Cache-Status: HIT
高级技巧:绕过缓存与清除缓存
有时你可能希望某些用户(如管理员)不使用缓存,可以在 location 中添加:
# 如果请求头包含 X-No-Cache,则跳过缓存proxy_cache_bypass $http_x_no_cache;proxy_no_cache $http_x_no_cache; 至于清除缓存,Nginx 本身不提供直接清除接口,但你可以:
- 手动删除
/var/cache/nginx下的文件(需重启或重载 Nginx 才完全生效) - 使用第三方模块如
ngx_cache_purge - 通过设置较短的
inactive时间让缓存自动过期
总结
通过以上步骤,你已经成功配置了 Nginx 代理缓存,实现了 Web 加速优化 和 静态资源缓存。这不仅能提升用户体验,还能有效降低服务器成本。记住,合理的缓存策略是高性能网站的关键组成部分。
如果你正在构建高并发网站,强烈建议结合 反向代理缓存配置 与 CDN、Gzip 压缩等技术,打造极致流畅的访问体验!

