Nginx proxy cache使用

发布时间: 更新时间: 总字数:551 阅读时间:2m 作者: IP上海 分享 网址

在使用 Nginx 时,通常不仅希望为静态资源配置缓存,还希望为代理请求(proxy)配置缓存,以便更好地优化网站性能。下面是如何在 Nginx 中同时配置静态资源缓存和代理缓存的方法:

1. 配置静态资源缓存

首先,按照之前所提到的方式,为静态资源设置缓存:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|woff|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

2. 配置代理缓存

在配置代理缓存时,我们需要为代理请求设置缓存区域,并指定缓存条件。

2.1 定义缓存区域

http 上下文中定义一个缓存区域:

http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;
    ...
}
  • /var/cache/nginx 是缓存文件存储的路径,需要确保 Nginx 运行用户对其有足够的权限。
  • levels=1:2 决定了缓存键存储目录的层级。
  • keys_zone=my_cache:10m 定义了缓存区域的名称和内存使用大小。
  • inactive=60m 设置了如果在此时间段内没有被访问,缓存将被删除。
  • use_temp_path=off 默认使用缓存路径而不是临时路径。

2.2 配置代理缓存

然后,在 serverlocation 块中使用此缓存区域:

location / {
    proxy_pass http://backend_server;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    add_header X-Proxy-Cache $upstream_cache_status;
}
  • proxy_pass http://backend_server 指定了代理的后端服务器地址。
  • proxy_cache my_cache 启用了之前定义的缓存区域。
  • proxy_cache_valid 定义了不同 HTTP 状态码的缓存时间,例如 200 和 302 状态码被缓存 10 分钟,而 404 状态码只缓存 1 分钟。
  • add_header X-Proxy-Cache $upstream_cache_status 用于在响应头中显示缓存状态(HIT, MISS, BYPASS 等),这在调试时很有用。

3. 测试和重新加载配置

配置完毕后,使用以下命令测试配置:

nginx -t

如果测试通过,重新加载 Nginx:

sudo systemctl reload nginx

通过以上步骤,你可以在 Nginx 中同时实现对静态资源和代理请求的缓存管理,提升整体网站性能和响应速度。

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数