Nginx能够有效地缓存指定的静态资源文件,提高网站的响应速度和性能
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
location ~* \.(js|jpg|jpeg|png|gif|ico|css|svg|woff|woff2)$ {
proxy_pass http://100.64.0.21:7292;
proxy_cache my_cache;
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_cache_valid 200 301 302 60m;
proxy_cache_valid 404 1m;
expires 1h;
add_header Cache-Control "public, no-transform";
}
}
}
配置解释
/var/cache/nginx:指定缓存文件存储的路径为/var/cache/nginx
levels=1:2:设置缓存文件的目录层级结构为两级,第一级目录有1个字符,第二级目录有2个字符
keys_zone=my_cache:10m:定义缓存区域的名称为my_cache
,分配的内存大小为10MB,用于存储缓存的元数据
max_size=10g:设置缓存数据的最大磁盘空间占用量为10GB
inactive=60m:如果某个缓存数据在60分钟内没有被访问,则会被认为是非活动的,Nginx会将其从缓存中删除
use_temp_path=off:Nginx直接将缓存数据写入最终的缓存文件路径,不使用临时路径,以提高缓存的写入性能
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
在以下情况下,Nginx会使用过期的缓存数据来响应客户端请求:
- error:当与上游服务器通信出现错误时。
- timeout:当请求上游服务器超时时。
- http_500、http_502、http_503、http_504:当上游服务器返回500、502、503、504等错误状态码时。
proxy_cache_valid 200 301 302 60m:对于状态码为200、301、302的响应,缓存有效期为60分钟
proxy_cache_valid 404 1m:对于状态码为404的响应,缓存有效期为1分钟。
expires 1h; 设置响应头中的Expires
字段,告诉浏览器该资源的缓存有效期为1小时
add_header Cache-Control "public, no-transform"; 向响应头中添加Cache-Control
字段,值为public, no-transform
。public
表示该响应可以被任何缓存存储,包括浏览器缓存和中间缓存服务器;no-transform
表示缓存服务器不能转换响应的内容,必须原样返回给客户端