美文网首页
Nginx 学习之旅 | Nginx 缓存应用

Nginx 学习之旅 | Nginx 缓存应用

作者: stamSuper | 来源:发表于2020-02-27 17:59 被阅读0次

    缓存介绍

    页面打开速度

    1、服务器宽带
    2、服务器响应速度
    加机器,集群
    3、传输距离
    在不同区域放置缓存服务器
    4、网络延迟
    中国运营商:联通、电信、铁通(移动) 、 教育网

    廉价方案
    1、加缓存服务器
    把80%的数据放在缓存服务器
    2、CDN 服务商
    租用他们在全国各地的cdn服务器
    智能CDN : 根据用户的ip , 判断用户所在区域,然后直接在当地的CDN服务器获取资源

    缓存服务器: squid 、nginx 、 varnish
    

    nginx 缓存服务部署

    缓存服务器配置
    镜像服务器配置

    一、缓存部署

        # nginx 源码包
        [root@web01 ~]# wget    http://nginx.org/download/nginx-1.15.8.tar.gz
        # nginx 缓存模块
        [root@web01 ~]# wget    http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
        # 新建 nginx 管理账号
        [root@web01 ~]# useradd -r  www -s  /sbin/nologin
        # nginx 安装---解压源码包
        [root@web01 ~]# tar xf  nginx-1.15.8.tar.gz 
        [root@web01 ~]# tar xf  ngx_cache_purge-2.3.tar.gz  
        #  nginx 安装---安装依赖
        [root@web01 ~]# yum -y install gcc pcre-* zlib zlib-devel openssl-*
        # nginx 安装---配置 nginx
        [root@web01 ~]# cd  nginx-1.15.8
        [root@web01 nginx-1.15.8]#  ./configure --prefix=/usr/local/nginx   --user=www  --group=www  --add-module=../ngx_cache_purge-2.3  --with-http_stub_status_module
        # nginx 安装---编译
        [root@web01 nginx-1.15.8]#  make    -j4
        # nginx 安装---安装
        [root@web01 nginx-1.15.8]#  make install
    

    修改nginx 的用户和组

        [root@iZowj local]# chown www.www nginx -R
    

    开启缓存

    缓存部署

    实现方式:

    nginx 反向代理+缓存机制
    

    nginx 配置文件

    新建缓存目录
    [root@web01 ~]# mkdir -p /cache/proxy_temp_dir

    开启缓存

    如下缓存策略适合缓存小文件(小于1M)

    在 http 配置中添加

        # 1)设置缓存临时路径
        proxy_temp_path /cache/proxy_temp_dir;
        # 2)缓存路径及配置
        proxy_cache_path     /cache/proxy_dir    levels=1:2  keys_zone=cache0:10m   inactive=1d max_size=30g;
    
    
        # 注释
        #levels=1:2      缓存目录分为两级 第一级文件夹命名用一个字母      第二级文件夹用两个字母命名,最多三级。
        #keys_zone=cache0:10m        内存缓存区域 10M  名字为 cache0。在共享内存中设置一块存储区域来存放缓存的 key 和 metadata,这样 nginx 可以快速判断一个request 是否命中或者未命中缓存,1m 可以存储 8000 个 key,10m 可以存储80000 个 key
        #inactive=1d     有效期为 1 天,如果缓存内容在一天中没人访问则被删除
        #max_size=30g        硬盘空间中的 30G 做磁盘缓存,如果不指定,会使用掉所有disk  space,当达到配额后,会删除最少使用的 cache 文件
    

    缓存策略

    在server 模块中添加如下

    location    /   {
        proxy_pass  http://www.ayitula.com;
        proxy_cache cache0;
        proxy_cache_valid   200 304 30m;
        proxy_cache_valid   any 1m;
        proxy_cache_key $host$uri$is_args$args;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Forwarded-For $remote_addr;
        expires 60m;
    }
    
        注释:
        proxy_pass  http://www.ayitula.com;:  要代理的网站(缓存的网站)
        proxy_cache  cache0 : 使用的代理缓存名称   和 上面的缓存名称 对应
        proxy_cache_valid    200    304 30m : 缓存策略,对返回200 , 304 这样的数据进行缓存 30分钟
        proxy_cache_valid    any    1m :  其他返回的状态码的 , 都缓存1分钟
        proxy_cache_key $host$uri$is_args$args  : 根据host uri  参数(即完整URL) 生成缓存的key
        proxy_set_header    Host    $host   :    设置响应头
        proxy_set_header    X-Forwarded-For $remote_addr;  
        expires 60m :开启客户端浏览器缓存 60分钟
    

    访问某一个资源文件,看看是否走缓存服务
    curl -I http://xxx/logo.png

    清空 URL

    location    ~/purge(/.*){
        allow   127.0.0.1;
        allow   192.168.11.0/24;
        proxy_cache_purge   cache0  $host$1$is_args$args;
    }
    

    要删除某个资源, 直接在资源和主机之间加一个/purge 即可。

    镜像服务器配置

    这种是缓存大文件(大于1M的文件)

    root    /usr/local/nginx/html;
    index   index.html  index.php;
    proxy_store on;                  #开启镜像服务
    proxy_store_access   user:rw    group:rw    all:r;           #缓存本地存储文件的权限
    proxy_temp_path /usr/local/nginx/html/temp;      #本地临时缓存目录
    #判断本地目录中是否有文件,没有就去取源
    if  (   !-e $request_filename   )        {
        proxy_pass  http://www.runoob.com;
    }
    

    相关文章

      网友评论

          本文标题:Nginx 学习之旅 | Nginx 缓存应用

          本文链接:https://www.haomeiwen.com/subject/ftkxhhtx.html