ubuntu

Ubuntu Nginx缓存策略有哪些

小樊
45
2025-08-02 01:06:30
栏目: 智能运维

在Ubuntu上配置Nginx缓存策略可以显著提高网站性能。以下是一些基本的缓存配置步骤和策略:

基本缓存配置

  1. 安装Nginx和相关模块: 确保你已经安装了Nginx以及必要的模块。你可以使用以下命令来安装Nginx:

    sudo apt update
    sudo apt install nginx
    
  2. 配置缓存目录: 在Nginx配置文件中,你需要指定一个目录来存储缓存文件。通常,这个目录位于 /var/cache/nginx。你可以使用以下命令来创建这个目录(如果它不存在的话):

    sudo mkdir -p /var/cache/nginx
    sudo chown -R www-data:www-data /var/cache/nginx
    
  3. 编辑Nginx配置文件: 打开Nginx的主配置文件,通常位于 /etc/nginx/nginx.conf,或者你可以在 sites-available 目录下的特定虚拟主机配置文件中进行设置。例如:

    sudo nano /etc/nginx/sites-available/default
    
  4. 添加缓存配置: 在 server 块中,你可以添加以下配置来启用缓存:

    http {
        # 缓存路径
        proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    
        server {
            listen 80;
            server_name example.com;
    
            location / {
                proxy_pass http://backend;
                proxy_cache my_cache;
                proxy_cache_valid 200 302 10m;
                proxy_cache_valid 404 1m;
                add_header X-Proxy-Cache $upstream_cache_status;
            }
        }
    
        upstream backend {
            server unix:/var/run/php/php7.4-fpm.sock; # 根据你的PHP版本调整
            # 或者使用IP地址和端口
            # server 127.0.0.1:9000;
        }
    }
    

    在这个配置中:

    • proxy_cache_path 指令定义了缓存的存储路径、缓存层级、缓存区名称、最大缓存大小、缓存文件的最大非活动时间和是否使用临时路径。
    • proxy_cache 指令指定了使用的缓存区名称。
    • proxy_cache_valid 指令设置了不同HTTP状态码的缓存时间。
    • add_header X-Proxy-Cache 指令添加了一个自定义头部,用于显示缓存状态。
  5. 测试配置并重启Nginx: 在保存配置文件后,你可以使用以下命令来测试Nginx配置是否正确:

    sudo nginx -t
    

    如果配置测试通过,你可以重启Nginx来应用更改:

    sudo systemctl restart nginx
    

高级缓存策略

  1. 使用ETag和Last-Modified: 在 location 块中添加以下配置:

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        etag on;
        if_modified_since exact;
        # 其他配置...
    }
    
  2. 分类型设置缓存时间: 根据不同类型的文件设置不同的缓存时间:

    location ~* \.(jpg|jpeg|png|gif|svg|ico)$ {
        expires 365d;
        add_header Cache-Control "public, immutable";
    }
    
    location ~* \.(css|js)$ {
        expires 30d;
        add_header Cache-Control "public";
    }
    
    location ~* \.(woff|woff2|ttf|eot)$ {
        expires 180d;
        add_header Cache-Control "public";
    }
    
  3. 缓存验证配置

    location /static/ {
        proxy_cache static_cache;
        proxy_cache_valid 200 302 12h;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;
        # 其他配置...
    }
    

缓存清除策略

当静态文件更新时,需要确保用户能获取最新版本:

最佳实践

0
看了该问题的人还看了