插件窝 干货文章 怎么使用nginx缓存服务器上的静态文件

怎么使用nginx缓存服务器上的静态文件

缓存 cache Nginx proxy 326    来源:    2025-04-24

使用Nginx缓存静态文件配置指南

Nginx可以高效地缓存静态文件,减少服务器负载并提高响应速度。以下是配置Nginx缓存静态文件的详细步骤:

基本缓存配置

  1. 在Nginx配置文件中(http或server块)添加缓存路径配置:
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;
    }
}

高级缓存控制

  1. 缓存键定义
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
  1. 绕过缓存
proxy_cache_bypass $http_cache_control;
  1. 缓存刷新
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;
        }
    }
}

验证和监控

  1. 检查Nginx配置语法:
nginx -t
  1. 重新加载Nginx配置:
nginx -s reload
  1. 监控缓存命中率:

- 通过X-Proxy-Cache响应头查看缓存状态(HIT/MISS/BYPASS) - 使用ngx_cache_purge模块清除特定缓存

注意事项

  1. 确保缓存目录有正确的权限:
mkdir -p /var/cache/nginx
chown -R nginx:nginx /var/cache/nginx
  1. 根据服务器负载和文件大小调整缓存大小和过期时间

  2. 对于频繁更新的文件,设置较短的缓存时间或使用版本控制(如添加查询参数)

  3. 考虑使用expires指令与缓存结合,让浏览器也缓存静态资源

通过以上配置,Nginx可以高效地缓存静态文件,显著提高网站性能并减少服务器负载。