Nginx 缓存配置

前言

之前讲过Nginx的正向代理和反向代理,但是对于我们yum源代理,这肯定是不够的,最好是要能缓存资源。毕竟yum源的东西大部分都是静态资源,不会改变,如果能缓存这些资源,不仅能加快用户对资源的获取,另一方面也减少了出口流量和带宽。这其实也就是CDN的初衷了。

缓存配置

接下来就来说说nginx的缓存配置。不多说,直接上配置。

proxy_cache_path /cache/nginx/cache levels=1:2 keys_zone=yum:500m inactive=1000d max_size=80g;

server {
        server_name www.baidu.com;
        proxy_cache yum;
        proxy_cache_valid 200 304 302 1000d;
        proxy_cache_valid any 1m;
        proxy_ignore_headers Set-Cookie;
        proxy_ignore_headers Cache-Control;
        proxy_ignore_headers Expires;
        proxy_hide_header Cache-Control;
        proxy_hide_header Set-Cookie;
        proxy_hide_header Expires;
        location / {
                proxy_pass http://www.baidu.com/;
        }
}
其中,

proxy_cache_path 表示系统缓存文件路径,该路径必须要先创建,才能使用,否则nginx启动会失败

levels 设置缓存文件目录层次,levels=1:2 表示两级目录

keys_zone 设置缓存名字和缓存共享内存大小

inactive 在指定时间内没人访问则被删除,默认是10min,这里设置为1000d,就是这么豪放,其实后面完全都可以取而代之,作为yum源了

max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源

proxy_cache 使用名为yum的对应缓存配置,与上面keys_zone设置的名字要一致

proxy_cache_valid 对指定http状态码的响应进行缓存时间设置,这里过期时间也设置为1000d,能用就用,就不要再回源校验了

proxy_ignore_headers 忽略源站http响应的某个头部字段,这里忽略的三个字段是为了保证缓存不过期,静态资源,没必要过期

proxy_hide_header 设置本端服务器与源站交互时不使用某个字段,同样也是为了保证缓存不过期

扫描二维码关注公众号,回复: 36632 查看本文章

proxy_pass 设置我们要代理的服务器地址,即源站地址

后面几个忽略http响应头部字段是因为很多网站资源都设置不能缓存,或者设置过期时间,这样我们的代理服务器就没办法缓存,每次都要回源取,或者校验。如下图百度首页就设置了不允许缓存。

这里写图片描述

其中,
private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理,只能用缓存内容回应先前请求该内容的那个用户
no-cache:指示请求或响应消息不能缓存,实际上是可以存储在本地缓存区中的,只是在与原始服务器进行新鲜度验证之前,缓存不能将其提供给客户端使用,也就是donot-serve-from-cache-without-revalidation
no-store:缓存应该尽快从存储器中删除文档的所有痕迹,因为其中可能会包含敏感信息
另外,
Pragma:用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。

猜你喜欢

转载自blog.csdn.net/u010039418/article/details/80014789