centos

centos nginx缓存机制详解

小樊
51
2025-08-10 14:20:50
栏目: 智能运维

CentOS下Nginx缓存机制主要涉及HTTP缓存FastCGI缓存,核心是通过配置缓存路径、存储策略及控制规则提升性能,减少后端负载。以下是详细说明:

一、核心缓存类型

  1. HTTP缓存(反向代理缓存)
    缓存后端服务器(如应用服务器)的响应内容,适用于静态资源、API响应等。

    • 配置指令
      • proxy_cache_path:定义缓存路径、层级、大小等,如/var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m
      • proxy_cache:启用缓存并指定缓存区域(如my_cache)。
      • proxy_cache_valid:设置不同HTTP状态码的缓存时间,如200 302 10m(缓存10分钟)。
    • 关键参数
      • inactive:缓存未被访问超过指定时间后删除(如60m)。
      • use_temp_path off:直接写入缓存目录,避免临时文件开销。
  2. FastCGI缓存
    缓存动态脚本(如PHP)的执行结果,适用于PHP-FPM等动态服务。

    • 配置指令
      • fastcgi_cache_path:类似proxy_cache_path,专为FastCGI设计。
      • fastcgi_cache:启用缓存并绑定缓存区域。
      • fastcgi_cache_valid:控制动态响应的缓存时长。

二、缓存配置步骤

  1. 安装Nginx
    确保已安装Nginx及缓存相关模块(默认包含proxy_cachefastcgi_cache):

    sudo yum install nginx
    
  2. 配置缓存路径
    /etc/nginx/nginx.confhttp块中添加:

    # HTTP缓存配置
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path off;
    
    # FastCGI缓存配置(针对PHP)
    fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=fcgi_cache:10m max_size=1g inactive=60m use_temp_path off;
    
  3. 启用缓存规则

    • HTTP缓存(针对静态资源或API):
      location / {
          proxy_pass http://backend_server;
          proxy_cache my_cache;
          proxy_cache_valid 200 302 10m;  # 缓存200/302状态码10分钟
          proxy_cache_valid 404 1m;       # 缓存404状态码1分钟
          add_header X-Proxy-Cache $upstream_cache_status;  # 显示缓存状态(HIT/MISS)
      }
      
    • FastCGI缓存(针对PHP):
      location ~ \.php$ {
          fastcgi_pass unix:/var/run/php-fpm.sock;
          fastcgi_cache fcgi_cache;
          fastcgi_cache_valid 200 302 10m;
          fastcgi_cache_valid 404 1m;
          add_header X-FastCGI-Cache $upstream_cache_status;
      }
      
  4. 重启Nginx生效

    sudo nginx -t  # 测试配置语法
    sudo systemctl restart nginx
    

三、缓存验证与控制

  1. 查看缓存状态
    通过响应头X-Proxy-CacheX-FastCGI-Cache判断缓存是否命中:

    • HIT:命中缓存,直接返回本地内容。
    • MISS:未命中缓存,需请求后端服务器。
  2. 高级缓存控制

    • 强制缓存:通过Cache-ControlExpires头控制客户端缓存(如Cache-Control: max-age=3600)。
    • 缓存失效:使用proxy_cache_purge模块清除指定缓存(需安装模块)。
    • 绕过缓存:通过proxy_cache_bypass指令在特定条件下(如带no-cache参数的请求)不使用缓存。

四、缓存优化建议

通过以上配置,可显著提升Nginx在CentOS环境下的响应速度,降低后端服务器压力。

0
看了该问题的人还看了