Nginx可以高效地缓存静态文件,减少服务器负载并提高响应速度。以下是配置Nginx缓存静态文件的详细步骤:
http {
# 定义缓存路径和参数
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g use_temp_path=off;
server {
...
}
}
参数说明:
- /var/cache/nginx
:缓存文件存储路径
- levels=1:2
:目录层级结构
- keys_zone=STATIC:10m
:定义共享内存区名称和大小(10MB)
- inactive=24h
:24小时内未被访问的缓存将被删除
- max_size=1g
:缓存最大占用1GB磁盘空间
- use_temp_path=off
:禁用临时路径
server {
listen 80;
server_name example.com;
location /static/ {
proxy_cache STATIC;
proxy_cache_valid 200 1d; # 成功响应缓存1天
proxy_cache_valid 404 1m; # 404响应缓存1分钟
proxy_cache_use_stale error timeout updating;
proxy_cache_background_update on;
proxy_cache_lock on;
add_header X-Proxy-Cache $upstream_cache_status;
root /path/to/your/static/files;
}
}
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
proxy_cache_bypass $http_cache_control;
location ~ /purge(/.*) {
proxy_cache_purge STATIC "$scheme$request_method$host$1";
}
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g use_temp_path=off;
server {
listen 80;
server_name example.com;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {
proxy_cache STATIC;
proxy_cache_valid 200 30d;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating;
proxy_cache_background_update on;
proxy_cache_lock on;
add_header X-Proxy-Cache $upstream_cache_status;
expires 30d;
access_log off;
root /var/www/html;
}
}
}
nginx -t
nginx -s reload
- 通过X-Proxy-Cache
响应头查看缓存状态(HIT/MISS/BYPASS)
- 使用ngx_cache_purge
模块清除特定缓存
mkdir -p /var/cache/nginx
chown -R nginx:nginx /var/cache/nginx
根据服务器负载和文件大小调整缓存大小和过期时间
对于频繁更新的文件,设置较短的缓存时间或使用版本控制(如添加查询参数)
考虑使用expires
指令与缓存结合,让浏览器也缓存静态资源
通过以上配置,Nginx可以高效地缓存静态文件,显著提高网站性能并减少服务器负载。