CentOS下Nginx缓存机制主要涉及HTTP缓存和FastCGI缓存,核心是通过配置缓存路径、存储策略及控制规则提升性能,减少后端负载。以下是详细说明:
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
:直接写入缓存目录,避免临时文件开销。FastCGI缓存
缓存动态脚本(如PHP)的执行结果,适用于PHP-FPM等动态服务。
fastcgi_cache_path
:类似proxy_cache_path
,专为FastCGI设计。fastcgi_cache
:启用缓存并绑定缓存区域。fastcgi_cache_valid
:控制动态响应的缓存时长。安装Nginx
确保已安装Nginx及缓存相关模块(默认包含proxy_cache
和fastcgi_cache
):
sudo yum install nginx
配置缓存路径
在/etc/nginx/nginx.conf
的http
块中添加:
# 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;
启用缓存规则
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)
}
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;
}
重启Nginx生效
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
查看缓存状态
通过响应头X-Proxy-Cache
或X-FastCGI-Cache
判断缓存是否命中:
HIT
:命中缓存,直接返回本地内容。MISS
:未命中缓存,需请求后端服务器。高级缓存控制
Cache-Control
和Expires
头控制客户端缓存(如Cache-Control: max-age=3600
)。proxy_cache_purge
模块清除指定缓存(需安装模块)。proxy_cache_bypass
指令在特定条件下(如带no-cache
参数的请求)不使用缓存。max-age=31536000
),并启用expires
头。10m
),或结合ETag
/Last-Modified
实现协商缓存。chown -R nginx:nginx /var/cache/nginx
)。通过以上配置,可显著提升Nginx在CentOS环境下的响应速度,降低后端服务器压力。