Nginx是处理静态文件的高性能服务器,通过合理配置可以极大提升静态资源的加载速度。以下是完整的静态文件缓存配置方案:
http {
# 定义缓存路径和参数
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m inactive=60m use_temp_path=off;
server {
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
# 启用缓存
proxy_cache static_cache;
# 缓存键设置
proxy_cache_key "$scheme$request_method$host$request_uri";
# 缓存有效状态码及时间
proxy_cache_valid 200 302 304 60m;
proxy_cache_valid 404 1m;
# 添加缓存状态头
add_header X-Proxy-Cache $upstream_cache_status;
# 源服务器设置
proxy_pass http://backend;
}
}
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
add_header Pragma "public";
add_header ETag "";
}
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
proxy_cache_lock_age 5s;
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge static_cache "$scheme$request_method$host$1";
}
缓存分区:根据文件类型或访问频率设置不同的缓存区域
proxy_cache_path /var/cache/nginx/images levels=1:2 keys_zone=img_cache:10m inactive=1d use_temp_path=off;
proxy_cache_path /var/cache/nginx/assets levels=1:2 keys_zone=asset_cache:20m inactive=7d use_temp_path=off;
缓存预热:使用爬虫或脚本预先访问热门资源填充缓存
监控缓存命中率:通过$upstream_cache_status
变量监控缓存状态
文件版本控制:使用文件哈希或版本号实现长期缓存
location ~* ^(.+)\.(?:[0-9a-f]+)\.(js|css|png|jpg|jpeg|gif|webp|ico)$ {
try_files $1.$2 $uri =404;
}
多级缓存:结合CDN和Nginx缓存构建多级缓存体系
# 打开sendfile系统调用
sendfile on;
# 开启TCP_NOPUSH选项
tcp_nopush on;
# 开启TCP_NODELAY选项
tcp_nodelay on;
# 优化连接保持
keepalive_timeout 65;
keepalive_requests 1000;
# 文件描述符缓存
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
通过以上配置,Nginx可以高效地缓存和提供静态文件服务,显著减少服务器负载并提高用户访问速度。